알고리즘 테스트/프로그래머스 문제풀이 및 해설
<프로그래머스 문제풀이: [연습문제] N개의 최소공배수> Level 2 - 파이썬
개발린이
2020. 12. 18. 16:39
def solution(arr):
num = max(arr)
n = 1
arr.sort()
while True:
for i in arr[:-1]:
if (num*n)%i != 0:
n += 1
break
else:
break
return num*n
잘 생각해보면, 최소 공배수도, 주어진 숫자들 중 가장 큰 숫자의 배수이다. 따라서 우선 num
을 배열의 가장 큰 숫자로 지정해주고, n=1
, 그리고 배열을 작은 순서대로 정렬 시켜준다. 다음은 while문
을 사용해서 num*n
, 즉 num
의 배수가 num
보다 작은 배열의 숫자들로 나누어지는지 확인해보는 과정을 거친다. 만약 나누어떨어지지 않는다면, n += 1
을 통해 곱하는 숫자를 1씩 올려주고 다시 while문
을 실행하게끔 한다. 만약 모든 숫자가 나누어떨어지는 num*n
숫자가 나온다면, while문
을 빠져나와주고, num*n
을 되돌려주면 된다.