백준 13241번 풀이

문제

1934번이랑 같은 문제다. 두 수의 최소공배수를 출력하면 된다.

풀이

일단 이걸 보고 오면 추가적인 설명이 필요 없을 정도로 명확하게 이해가 될 것이다. 왜냐하면 같은 문제거든.

import sys

def Euclidean(a, b):
while b != 0:
[a, b] = [b, a%b]
return a

N, M = map(int, sys.stdin.readline().split())

GCD = Euclidean(N,M)
LCM = GCD * (N // GCD) * (M // GCD)

print(LCM)

진짜로 이거 내면 맞는다. LCM은 최소공배수, GCD는 최대공약수. 그럼 이 시점에서 여러분들은 한가지가 궁금할것이다. 아니, 아무리 백준이라지만 똑같은 문제를 두번이나 낸다고요? 왜?

마우스로 그어서 좀 삐뚤게 됐는데 아래를 잘 보자. C/C++과 자바에는 제약이 있는 것을 알 수 있다.

몇 번 풀이였는지는 모르겠는데 아무튼, C언어에서는 숫자 크기에 따른 정수 형태가 정해져 있다고 했었다. 그래서 파이썬이면 걍 풀어도 되는 문제인데 C언어에서는 어유 이게 뭔 괴랄한 풀이인가 싶은 문제가 있었음.. 아마 큰 수 A+B였을건데… 이것도 그거 비슷한 듯 하다.