python | module 'math' has no attribute 'lcm'
·
TIL/오류해결
프로그래머스 문제를 푸는 과정에서 최소공배수가 필요하여 math.lcm을 사용했으나 attributeerror: module 'math' has no attribute 'lcm' 와 같은 오류가 발생하였다. lcm은 python 3.9 버전부터 사용이 가능한 메소드이기 때문에 이럴 때에는 다른 방법으로 최소공배수를 구해야 한다. 두 수가 주어졌을 때 최소공배수는 두 수의 곱을 최대공약수로 나누어 구할 수 있다. $$ lcm(a, b) = \frac{a \times b}{gcd(a, b)} $$ 예를 들어, 6과 4의 최소공배수를 구하면 다음과 같다. 1) 두 수의 곱 $ 6 \times 4 = 24 $ 2) 두 수의 최대공약수 $ gcd(6, 4) = 2 $ 3) 두 수의 최소공배수 $ \frac{24}..
프로그래머스 | 최빈값 구하기 [파이썬 Python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(array): count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트 for i in array: count[i] += 1 m = 0 # 최빈값의 개수 for c in count: if c == max(count): m += 1 if m > 1: # 최빈값이 2개 이상이면 -1을 리턴 return -1 else: # 최빈값이 1개이면 해당 숫자를 리턴 return count.index(max(count)) 주어진 배열에서 최빈값을 찾는 문제이다. 최빈값..
프로그래머스 | 분수의 덧셈 [파이썬 Python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import math def solution(numer1, denom1, numer2, denom2): b = denom1 * denom2 a = (numer1 * denom2) + (numer2 * denom1) gcd=math.gcd(a,b) a = a // gcd b = b // gcd answer = [a, b] return answer $\frac{numer1}{denom1}$, $\frac{numer2}{denom2}$ 의 합을 기약분수로 나타내는 문제이다. 처음에는 denom1과 denom2..
pandas | Series와 Dataframe에서 Broadcasting
·
TIL/python
다음과 같은 dataframe과 series가 있다. 이 예시는 dataframe의 columns와 Series의 index가 a, b, c, d로 같은 경우이다. df=DataFrame(np.arange(16).reshape(4,4), columns=list('abcd')) df s=Series(range(10,14),index=list('abcd')) s 이때, df와 s를 + 연산을 사용한 결과는 다음과 같다. Dataframe의 column에 해당하는 Series의 index를 가지는 값을 해당 column에 더한다. 즉, s에서 인덱스 a에 해당하는 값인 10을 df의 a열에 한 번에 더한다. 한 번에 더하는 이 과정을 브로드 캐스팅(broadcasting)이라 한다. + 대신 add 메소드를 ..
python | sympy 설치 및 사용
·
TIL/python
sympy 설치 방정식을 풀 수 있는 라이브러리인 sympy는 python 내장 라이브러리가 아니기 때문에 따로 설치해주어야 한다. pip install sympy Anaconda Prompt에서 설치하는 과정을 보면 다음과 같다. 나의 경우에는 가상환경으로 이동(activate ml)하여 라이브러리를 설치해주었다. sympy 활용 sympy를 활용하여 아래 2차 방정식을 x에 대해 미분해보았다. $x^2 + 2x + 3$ import sympy as sym #1 from sympy.abc import x #2 sym.diff(sym.poly(x**2 + 2*x + 3), x) #3 #1) sympy 라이브러리를 불러온다. sym 이름으로 사용한다. #2) sympy.abc는 쉽게 말해 a부터 z까지의 ..
python | list에서 remove 사용 시 주의할 점
·
TIL/python
다음과 같은 리스트가 있다. num_list=[15,16,22,28] 홀수인 15만을 남기기 위해 짝수를 제거하는 코드를 작성했고, 결과는 다음과 같았다. 22는 짝수인데 왜 지워지지 않고 남아있는 거지? 그 이유는 다음과 같다. for문에서 num_list의 원본을 그대로 사용하기 때문에 remove를 진행하면서 원본에 손상이 가고 있었다. remove의 과정을 살펴보기 위해 print를 사용하여 남은 숫자와 지워진 숫자를 살펴보았다. 0번 인덱스에 위치한 15는 홀수이기 때문에 if문 조건에 부합하지 않아 남아있게 된다. 1번 인덱스에 위치한 16은 짝수이기 때문에 if문 조건에 부합하기 때문에 삭제되어 num_list는 [15,22,28]이 된다. for 문에서 처음에 선언한 num_list를 그대..