S E P H ' S

[Python] 최대공약수와 최소공배수 본문

Algorithm/Programmers

[Python] 최대공약수와 최소공배수

yoseph0310 2021. 6. 25. 14:54

 

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

유클리드 호제법을 사용하여 최대공약수를 구하고 최소공배수는 두 수의 곱에 최대공약수를 나눈 값이라는 것을 이용하여 문제를 풀었다.

유클리드 호제법의 설명은 다음 링크에 정리했다.

 

유클리드 호제

유클리드 호제법은 두 수의 최대공약수를 구하는 알고리즘이다. 일반적으로 최대공약수를 구하려면 소인수분해를 해야한다. 1112 = 139 X 2 X 2 X 2 695 = 139 X 5 두 수를 소인수분해한 후, 공통된 소

yoseph0310.tistory.com

def solution(n, m):
    def gcd(n,m):
        while m:
            n, m = m, n % m
        return n
    def lcm(n,m):
        return (n*m) // gcd(n,m)
    
    answer = [gcd(n,m), lcm(n,m)]
    return answer

파이썬의 내장함수를 사용하여 풀이할 수도 있다.

from math import gcd
def solution(n, m):
	return [gcd(n,m), (n*m)//gcd(n,m)]

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 소수 만들기  (0) 2021.06.30
[Python] 시저 암호  (0) 2021.06.25
[Python] 콜라츠 추측  (0) 2021.06.25
[Python] 하샤드 수  (0) 2021.06.25
[Python] 핸드폰 번호 가리기  (0) 2021.06.24