- 연습문제
- N개의 최소공배수
- Level 2
문제
- 100 이하의 n 개의 자연수가 주어질 때
- n 개의 수에 대한 최소공배수 구하기
예. [2,6,8,14] -> 4개의 수에 대한 최소 공배수
Idea
- 최소공배수 구하고 나온 최소공배수와 다음 수의 최소공배수 구하는 방식으로
- 반복적으로 구하기
Code
Swift
- 고차함수 활용: reduce
func lcm(_ a: Int, _ b: Int) -> Int {
return (a * b) / gcd(a, b)
}
func gcd(_ a: Int, _ b: Int) -> Int {
var num = [a, b].max()!
var divisor = [a, b].min()!
while num % divisor != 0 {
let remainder = num % divisor
num = divisor
divisor = remainder
}
return divisor
}
func solution(_ arr: [Int]) -> Int {
return arr.reduce(arr[0]) { lcm($0, $1) }
}
- 처음 풀이
func lcm(_ a: Int, _ b: Int) -> Int {
return (a * b) / gcd(a, b)
}
func gcd(_ a: Int, _ b: Int) -> Int {
var num = [a, b].max()!
var divisor = [a, b].min()!
while num % divisor != 0 {
let remainder = num % divisor
num = divisor
divisor = remainder
}
return divisor
}
func solution(_ arr: [Int]) -> Int {
if arr.count == 1 { return arr[0] }
var a = arr[0]
for b in arr[1...] {
a = lcm(a, b)
}
return a
}
'# Algorithm > --- 프로그래머스' 카테고리의 다른 글
[카카오] 튜플 (0) | 2022.03.14 |
---|---|
[프로그래머스] 최솟값 만들기 (0) | 2022.01.26 |
[프로그래머스] 피보나치 수 (0) | 2022.01.26 |
[프로그래머스] 행렬의 곱셈 (0) | 2022.01.26 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2022.01.26 |