본문 바로가기
IT/알고리즘

프로그래머스 N개의 최소공배수

by 어센트 2020. 7. 4.

https://programmers.co.kr/learn/courses/30/lessons/12953

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배��

programmers.co.kr

 

실제로 n 개의 최소공배수를 풀 때 사용하는 알고리즘을 이용했다. 주어지는 숫자가 100이하의 숫자이므로 2부터 증가시키며 100보다 작은 동안 나누어지는 수를 계속 나누어준후 재수들의 리스트에 삽입하여 저장하였고 나누어진 수들을 전부곱하여 리턴하였다.

다른 사람의 풀이를 봤는데 파이썬에 최대공약수를 구해주는 내부 모듈이 존재했다. 최소공배수를 구하는 최대공약수를 이용한 공식있다는 것 또한 알게되었다.

 

 

풀이코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def solution(arr):
  arr.sort()
  answer = 1
  div = []
  num = 2; flag = False
  while num<=100:
    for i in range(len(arr)):
      if arr[i]%num == 0 :
        arr[i] /=num
        flag = True
    if flag == True: # 한번이라도 나눴다면 추가
      flag = False
      div.append(num)
      num = 2
    else:
      num+=1
  for i in arr:
    answer*=i
  for i in div:
    answer*=i
  return int(answer)
cs

다른 사람 풀이

1
2
3
4
5
6
7
8
import math
 
def nlcm(num):      
    answer = num[0]
    for n in num:
        answer = n * answer / math.gcd(n, answer)
  
    return answer
cs