문제
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한사항
arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.
입출력 예
내 풀이
유클리드
fun gcd(n: Int, m: Int): Int {
return if (m != 0) gcd(m, n % m) else n
}
/* 최대공약수 구하기
* ex.
* gcd(16,12)
* gcd(12, 16%12) = gcd(12,4)
* gcd(4, 12%4) = gcd(3,0)
* 최대공약수는 3
* */
//최소 공배수
fun lcm(n: Int, m: Int): Int {
return n * m / gcd(n, m)
}
// 두 수의 곱을 두 수의 최대공약수로 나누ㅁ
풀이
class Solution {
fun solution(arr: IntArray): Int {
var answer = arr[0]
for(i in 1 until arr.size){
answer = lcm(answer,arr[i])
}
return answer
}
//최대공약수
fun gcd(n: Int, m: Int): Int {
return if (m != 0) gcd(m, n % m) else n
}
//최소공배수
fun lcm(n: Int, m: Int): Int {
return n * m / gcd(n, m)
}
}
다른 사람의 풀이
class Solution {
fun solution(arr: IntArray): Int {
var answer = 1
while(true) {
var x = 0
for(a in arr) x += answer%a
if(x==0) return answer
answer++
}
return answer
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Kotlin] 귤 고르기 (0) | 2024.04.11 |
---|---|
[프로그래머스_Kotlin] 멀리 뛰기 (1) | 2024.04.08 |
[프로그래머스_Kotlin] 예상 대진표 (0) | 2024.04.04 |
[프로그래머스_Kotlin] 카펫 (0) | 2024.04.03 |
[프로그래머스_Kotlin] 이진 변환 반복하기 (0) | 2024.04.01 |