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
}