[프로그래머스 / Swift] Lv.2 - N개의 최소공배수

박준혁 - Niro·2024년 6월 14일
0

프로그래머스

목록 보기
10/12
post-thumbnail

🔗 문제 링크


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)
}
profile
📱iOS Developer, 🍎 Apple Developer Academy @ POSTECH 1st, 💻 DO SOPT 33th iOS Part

0개의 댓글