TLI/코드카타
2024.06.13 TIL 코트카타 81번(N개의 최소공배수)
jaeseonyoo
2024. 6. 13. 23:30
fun solution(arr: IntArray): Int {
var lcm = arr[0]
for(arrIndex in 1..arr.size-1) {
val number2 = arr[arrIndex]
val biggerNumber = Math.max(lcm, number2)
val smallerNumber = Math.min(lcm, number2)
var operand1 = 2
var operand2 = 2
var result1 = smallerNumber
var result2 = biggerNumber
while (result1 != result2) {
result1 = smallerNumber * operand1++
if(result1 == result2)
break
if (result1 > result2)
result2 = biggerNumber * operand2++
}
lcm = result1
}
return lcm
}
풀이과정
1. 두 수의 최소공배수를 구한다.
1.1. 큰수, 작은수를 분류한다.
1.2. 작은 수를 1배수씩 더해가며 큰 수와 같아지는지 확인한다.
1.3. 작은 수가 큰 수를 초과하면 큰 수를 1배수를 더한다.
1.4. 작은 수와 큰 수가 같아질 때까지 1.1~1.3 과정을 반복한다.
2. 구한 최소 공배수와 다음 숫자의 대하여 1번의 과정을 진행한다.
3. 배열의 끝까지 반복한다.
포인트
- 많이 알려져 있는 공식을 사용하지 않고 직접 구하기