🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/💛 백준

[준비운동 PART1. 튼튼한 기본기] 최대공약수와 최소공배수(2609번)

안오늘 2021. 7. 1. 23:47

1. 문제 설명

https://www.acmicpc.net/problem/2609

2. 나의 풀이

a, b = map(int, input().split())

# 유클리드 호제법, 최대공약수 구하기
def GCD(x, y):
    while(y):
        x,y = y, x%y
    return x

# 최소공배수 구하기
def LCM(x, y):
    result = (x*y)//GCD(x,y)
    return result

print(GCD(a, b))
print(LCM(a, b))

유클리드 호제법이란?

x, y의 최대공약수는 y, r의 최대공약수와 같다는 것을 이용한 방법이다. (x%y = r)

즉, 계속해서 x에 y를 대입하고 y에는 r(x%y)을 대입하다보면,

언젠가는 r(x%y)이 0일 때가 있다.

나머지의 값이 0일 때의 y값이 최대공약수이다.

최소공배수는 x*y를 최대공약수로 나눈 몫이다.

그냥 풀면 시간초과가 나고 유클리드 호제법을 사용해야 통과한다!