https://school.programmers.co.kr/learn/courses/30/lessons/12953?language=swift
단순히 두 값에 대한 최대 공약수, 최소 공배수를 구하는 문제가 아닌 n개의 수에 대한 최소 공배수를 구하는 문제여서 약간 당혹스러웠다..
일단 최소 공배수를 구하기 위해선 최대 공약수를 알아야만 한다
두 값의 곱에 최대 공약수를 나눠야만 하기 때문이다!
최대 공약수는 많이 접해봤을 유클리드 호제법으로 구하게 되었고 여기서는 재귀함수로 작성했다...
그러면... n 개의 수에 대해서는 어떻게 적용하지...?
두 값에 대한 최소 공배수를 구하고 다시 다음 값과 최소 공배수를 구하는 방식을 적용했다!
func solution(_ arr:[Int]) -> Int {
var result = arr[0]
for i in 1..<arr.count {
result = lcm(a: result, b: arr[i])
}
return result
}
// 최대공약수
func gcd(a: Int, b: Int) -> Int {
if (a % b) == 0 {
return b
}
return gcd(a: b, b: a%b)
}
// 최소공배수
func lcm(a: Int, b: Int) -> Int {
return a*b / gcd(a: a, b: b)
}