Algorithm/프로그래머스
[프로그래머스 스위프트] 최대공약수와 최소공배수
devKen
2022. 8. 24. 10:53
문제 요약
사실 이 문제의 경우 최대 공약수를 연산하는 공식이 기억이 안 나서 구글링을 통해 풀었다. 최상단의 gcd 함수가 그것인데 재귀를 통해 공약수를 연산하는 구조이다. 최대 공약수를 계산해낸다면 주어진 두 수, n과 m을 곱하고 이를 최대 공약수로 나눠서 최소 공배수를 도출한다. 잊고 있었던 옛 수학에 대한 지식 문제였다.
해답
func gcd(_ a:Int, _ b:Int) -> Int {
if b == 0 {
return a
} else {
return gcd(b, a%b)
}
}
func solution(_ n:Int, _ m:Int) -> [Int] {
var result:[Int] = []
var a = n
var b = m
let gcdValue = gcd(a,b)
result.append(gcdValue)
result.append(n*m/gcdValue)
return result
}