본문 바로가기
Algorithm/프로그래머스

[프로그래머스] Lv1 - 최대공약수와 최소공배수 (파이썬)

by 2HS 2022. 3. 25.

 

풀이
1.  (i = n~1) n과 m이 i로 나누어 떨어지면 최대공약수
2. 두 수의 곱을 최대공약수로 나눈 값은 최소공배수
3. 배열로 출력

 

다른 풀이

 

유클리드 호제법 - 위키백과, 우리 모두의 백과사전

유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를

ko.wikipedia.org

def solution(n, m):
    a, b = sorted([n, m], reverse=True)
    r = 1
    while r > 0:
        r = a % b
        a, b = b, r
    answer = [a, n*m//a]
    return answer
풀이
1. a, b = n, m 중 최대 최소 값
2. (r = 나머지) r이 0일 때까지 : 유클리드 호제법
    - r = a%b
    - a, b = n, r
3. 두 수를 최대공약수로 나눈 값은 최소공배수
4. answer 리턴

유클리드 호제법이라니 생각도 못했다...

프로그래머스에는 천재들만 있는 것 같다