Where who wants to meet someone

백준 Swift [13241] 최소공배수 본문

백준 알고리즘 문제 기록/약수, 배수와 소수 2

백준 Swift [13241] 최소공배수

Lust3r 2023. 8. 12. 23:59
728x90

난이도

실버 V

 

문제

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

 

13241번: 최소공배수

정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다

www.acmicpc.net

 

내 답안

let input = readLine()!.split(separator: " ").map { Int($0)! }

var minimumNumber = input.max()!

while true {
    if minimumNumber % input[0] == 0 && minimumNumber % input[1] == 0 {
        print(minimumNumber)
        break
    } else {
        minimumNumber += input.max()!
    }
}
  • 둘 중 큰 수의 배수에 최소 공배수가 포함되기 때문에 모든 수를 체크하지 않는 방안을 고려했다
  • while 무한루프를 돌면서 minimumNumber가 둘의 공배수일 경우 출력하고 탈출하도록 하여 첫 번째 값만 얻을 수 있게 하였고, 아닐 경우에는 큰 값만큼 늘려서 다시 루프를 돌도록 하였다.
  • 아래 이미지 중 시간이 8 ms가 나온 것은 답안의 코드처럼 max()를 사용했을 때, 52 ms가 나온 것은 min()을 사용한 것이다