본문 바로가기

PS/백준

[BOJ] 백준 1934 최소공배수 (Swift)

반응형

문제

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

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

풀이

최소공배수는 어떻게 구할 수 있을까요?

최소공배수는 두 수의 곱 / 최대공약수로 구할 수 있습니다.

그렇다면 최대공약수는 어떻게 구할 수 있을까요?
최대공약수소인수분해를 하여 공통된 소수를 찾아서 구할 수도 있겠지만,
유클리드 호제법을 사용하면 더 효율적으로 구현할 수 있습니다.

유클리드 호제법나머지를 구하는 연산을 통해 구현하는데,
간단하게 12와 30이 있다고 가정하면

  • 30 % 12 = 6
  • 12 % 6 = 0

최대공약수(6)를 구할 수 있습니다.

이제 12 * 30 / 6 == 60 최소공배수를 구할 수 있겠죠?

소스코드

후기

최소공배수 = 두 수의 곱 / 최대공약수 라는 식을 알고,
최대공약수를 구하는 방법을 안다면 쉽게 풀 수 있는 문제입니다.

반응형