[PRO][Lv.2] N개의 최소공배수

김정현·2023년 1월 18일

프로그래머스

목록 보기
40/50

📚 Problem

N개의 최소공배수

💫 Solve

func solution(_ arr:[Int]) -> Int {
    
    if arr.count == 1 {
        return arr[0]
    }else {
        var n = arr[0
                   ]
        for i in 1..<arr.count {
           n = lcm(n, arr[i])
        }
        return n
    }
    
}

func gcd(_ a: Int, _ b: Int) -> Int {
    if b == 0 {
        return a
    }
    else {
        return gcd(b,a%b)
    }
}

func lcm(_ a: Int, _ b : Int) -> Int {
    return a * b / gcd(a,b)
}

🩺 Another Solution

func gcd(_ a: Int, _ b: Int) -> Int {
  let r = a % b
  if r != 0 {
    return gcd(b, r)
  } else {
    return b
  }
}

func lcm(_ m: Int, _ n: Int) -> Int {
  return m / gcd(m, n) * n
}
func solution(_ arr:[Int]) -> Int {
    return arr.reduce(1) { lcm($0, $1) }
}

✌️ 알아간것

유클리드 호제법을 잘 사용한거 같다.

profile
🍎💻👍

0개의 댓글