본문 바로가기
알고리즘/프로그래머스

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

by 줍 2024. 4. 11.

1. arr를 순회하면서 누적적으로 최소공배수를 구하기 위해 for 문을 사용했는데, reduce를 사용해볼 수도 있다. 고차함수의 활용은 종말 간편하다..

func solution(_ arr:[Int]) -> Int {
    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)
    }
    
    var result = arr[0]
    for i in arr {
        result = lcm(result, i)
    }
    return result
}
arr.reduce(1) { lcm($0, $1) }