이번 문제는 프로그래머스 LEVEL 2 N개의 최소공배수 문제이다.
기존의 두 수에 대하여 두 수의 최소공배수를 구하는 것을 N개의 수로 확장한 문제이다.
풀이는 간단했다. 두 수의 최소공배수는 두 수의 곱에서 최대 공약수를 나누어 주면 나오기 때문에 n개의 수에 대해서 최소공배수를 구하려면 먼저 가장 작은 두 수의 최소공배수를 구하고 그 최소공배수를 가지고 다음 수와의 최소공배수를 구하면 n개의 수의 최소공배수를 구할 수 있다.
import kotlin.math.*
class Solution {
fun solution(arr: IntArray): Int {
var LCM = arr[0]
for(i : Int in 1..arr.size-1){
var multiNum = LCM * arr[i]
var GCD = gcd(LCM, arr[i])
LCM = multiNum / GCD
}
var answer = LCM;
return answer
}
fun gcd(a: Int, b: Int): Int {
var maximum = max(a, b)
var minimum = min(a, b)
if (minimum == 0) {
return max(a, b)
} else {
return gcd(minimum, maximum % minimum)
}
}
}
자세한 문제한 대한 설명은 밑 링크를 참조하면 된다.
(https://school.programmers.co.kr/learn/courses/30/lessons/12953)