N개의 최소공배수
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한사항
- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
입출력 예
arr result [2, 6, 8, 14] 168 [1, 2, 3] 6
나의 생각의 흐름을 주절주절..
주어진 N개의 수의 최소 공배수를 구하기 위해서는,
주어진 수들의 공통된 배수 중에서 가장 작은 것을 구해야 한다..한 수를 정해서 그 배수들을 나머지 수로 나누면서 다 나누어 떨어지면 공배수이다.
그 후보들을 가장 적게 하려면 가장 큰 수의 배수를 나머지 수로 나누어가면서 모두 나누어 떨어지는 가장 작은 수가 최소 공배수가 될 것이다.
굿
결론
주어진 수들 중 가장 큰 수에 배수를 구해서
나머지 주어진 수들로 나누었을때 모두 나누어 떨어지면
그 수를 최소 공배수로 하고 반복문을 탈출..
주어진 수 중 하나라도 나누어 떨어지지 않으면 다음 배수로 나누어 보는 것을 계속 반복한다
굿
def solution(arr): n = 1 arr.sort() while True: temp = arr[-1] * n n += 1 flag = True for a in arr[:-1]: if temp % a != 0: flag = False break if flag: answer = temp break return answer