n개의 최소공배수
문제
n개 수의 초소공배수. 즉 n개의 배수들 중 공통이 되는 가장 작은 숫자 구하기
풀이
from itertools import combinations
def solution(arr):
def gcp(a,b):
while b != 0:
a, b = b, a % b
return a
def lcm(a,b):
return a*b // (gcp(a,b))
# 첫번째와 두번째를 하고 나머지와 다시계산하는 식으로 접근한다!
def lcm_recursive(numbers):
if len(numbers) == 1:
return numbers[0]
else:
first_res = lcm(numbers[0], numbers[1])
return lcm_recursive([first_res] + numbers[2:])
return lcm_recursive(arr)
알게된 점
- 최소공배수를 구하는 법 = (두수의 곱) / (두수의 최대공약수)
- 최대공약수를 구하는 법 = 두 수 a, b에서 a를 b로 나눈 나머지를 r이라고 할때 나머지가 0이 될때의 b값.
- 재귀를 자꾸 생각해보자~ 잡아먹으면서 진행하기
Leave a comment