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

Junyoung Park·2022년 8월 31일
0

코딩테스트

목록 보기
603/631
post-thumbnail

1. 문제 설명

N개의 최소공배수

2. 문제 분석

최소공배수란 특정 두 수의 곱을 두 수의 최대공약수로 나눈 값이다.

  • 불필요한 연산이 있었다. 주어진 수의 최댓값 이하의 모든 소수를 에라토스테네스의 체로 구한 뒤, 소인수분해를 하고, 소인수분해 결과값을 통해 최소공배수를 구할 수도 있을 것이다.

3. 나의 풀이

func solution(_ arr:[Int]) -> Int {
    var lcd = arr[0]
    if arr.count > 1 {
        for idx in 1..<arr.count {
            let gcd = getGCD(lcd, arr[idx])
            lcd = lcd * arr[idx] / gcd
        }
    }
    return lcd
}

func getGCD(_ num1: Int, _ num2: Int) -> Int {
    if num1 > 0 && num2 > 0 && abs(num1 - num2) > 0 {
        return getGCD(abs(num1 - num2), min(num1, num2))
    } else {
        return min(num1 ,num2)
    }
}
profile
JUST DO IT

0개의 댓글