[프로그래머스] N개의 최소공배수Lv.2
나의 풀이
def gcd(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
return a
while b % a != 0:
temp = b % a
b, a = a, temp
return a
def solution(arr):
answer = arr[0]
for i in range(1, len(arr)):
answer = (answer * arr[i]) // gcd(answer, arr[i])
return answer
- 0번째 인덱스와 1번째 인덱스의 최소 공배수를 구하고 이 최소 공배수 값과 다음 인덱스에 해당하는 숫자의 최소공배수를 구하는 과정을 반복하는 방식으로 접근하였다.
- 최소 공배수를 구하기 위해 최대 공약수를 구하는 함수를 작성하였다.
- answer = arr[0]으로 세팅한다.
- 인덱스 1부터 배열을 다 돌때까지 answer와 arr[i]의 최소 공배수를 구해준다. 해당 최소공배수를 answer에 담아두고 다시 answer와 그 다음 인덱스의 숫자의 최소 공배수를 구해준다.