최대공약수와 최소공배수 구하는 법은 자주 보는데도 잘 외워지질 않는다.
최대공약수는 a와 b라는 숫자에 대해 a를 b로 나눈 나머지를 r이라고 할 때,
gcd(a,b) -> gcd(b, r) -> ... 을 계속 반복하여 결국엔 처음 앞의 parameter가 0이 될 때까지 반복하면 된다.
최소공배수는 a와 b를 곱한 다음 gcd(a, b)로 나누면 끝.
정답코드를 보면서 이해해보자:
func gcd(_ a: Int, _ b: Int) -> Int{
if (b == 0) { return a }
return gcd(b, a % b)
}
func lcm(_ a: Int, _ b: Int) -> Int {
return a * b / gcd(a, b)
}
func solution(_ n:Int, _ m:Int) -> [Int] {
var g: Int = gcd(n, m)
var l: Int = lcm(n, m)
return [g, l]
}
결과
'Algorithm' 카테고리의 다른 글
프로그래머스 [Swift] 제일 작은 수 제거하기 (0) | 2021.07.05 |
---|---|
프로그래머스 [Swift] 문자열 내 마음대로 정렬하기 (0) | 2021.07.03 |
프로그래머스 - 소수 찾기 [Swift] (0) | 2021.07.03 |
programmers - 나누어 떨어지는 숫자 배열 [Swift] (0) | 2021.07.02 |
프로그래머스 - 다트 게임[Swift] (0) | 2021.07.01 |
최근댓글