39번 최대공약수와 최대공배수
* 유클리드 호제법 > 두 양의 정수 a, b(a>b)에 대하여 a = bq + r(o<= r < b)이라 하면, a와 b의 최대공약수는 b과 r의 최대공약수와 같다. - 즉 gcd(a, b) = gcd(b,r) > 만약 r = 0이라면 a와 b의 최대공약수는 b가 된다. +) 최대공배수는 (a * b) / (최대공약수) 다. |
def solution(n, m):
answer = []
a, b = max(n,m), min(n,m)
t = 1
while t > 0 :
t = a%b
a, b = b, t
answer.append(a)
answer.append(n*m/a)
return answer
> lambda와 재귀를 활용해 유클리드 호제법으로 푼 풀이
def solution(n, m):
gcd = lambda a,b : b if not a%b else gcd(b, a%b)
lcm = lambda a,b : a*b//gcd(a,b)
return [gcd(n, m), lcm(n, m)]
40번 3진번 뒤집기
def solution(n):
answer = []
while True :
if n < 3 :
answer.append(n)
break
else :
answer.append(n%3)
n = n//3
cnt = 0
a = 0
for i in range(len(answer)):
a = a + answer[-i-1]*3**cnt
cnt += 1
return a
> 다른 답
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
#몫이 0이 될 때까지 실행
answer = int(tmp, 3)
#int함수 활용
return answer
'[스파르타코딩클럽]데이터분석 과정 > PYTHON' 카테고리의 다른 글
[Python 코드카타] 44~46번 (프로그래머스) (0) | 2024.01.18 |
---|---|
[Python 코드카타] 41 ~ 43번 (프로그래머스) (0) | 2024.01.17 |
[Python 코드카타] 37번 ~ 38번 (프로그래머스) (0) | 2024.01.12 |
[Python 코드카타] 36번 (프로그래머스) (0) | 2024.01.11 |
[Python 코드카다] 31~35번 (프로그래머스) (1) | 2024.01.10 |