DevKim

[Python] 프로그래머스 Lv.2 - N개의 최소공배수 본문

알고리즘 PS

[Python] 프로그래머스 Lv.2 - N개의 최소공배수

on_doing 2021. 2. 11. 20:47
728x90

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

 

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

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

programmers.co.kr

[ 알고리즘 ]

구현

 

[문제 접근]

처음에 생각한대로 구현했을 때 자꾸 틀려서 이상하다고 생각했었는데,

모든 수를 한꺼번에 최소공배수를 구하는게 아니라, 두개씩 최소공배수를 구해서 최종적으로 나온 최소공배수를 채택하면 되는 일이었다. 3개 이상의 최소공배수를 구하는 방법을 까먹다니.. 살짝 충격 ㅎㅎ

 

 

[코드]

import math
from collections import deque
def solution(arr):

    que=deque(arr)
    
    while len(que)>1:
        a=que.popleft()
        b=que.popleft()
        
        #두개의 최소 공배수 구하기
        gcd=math.gcd(a,b)
        ans=gcd*(a//gcd)*(b//gcd)
        
        que.appendleft(ans)   
                
    return que[0]
728x90
Comments