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. 배열의 끝까지 반복한다.
포인트
- 많이 알려져 있는 공식을 사용하지 않고 직접 구하기
'TLI > 코드카타' 카테고리의 다른 글
2024.06.15 TIL 코트카타 83번 (귤고르기) (0) | 2024.06.15 |
---|---|
2024.06.14 TIL 코트카타 82번(멀리뛰기) (1) | 2024.06.14 |
2024.06.11 TIL 코트카타 79번(카펫) (0) | 2024.06.11 |
2024.06.10 TIL 코트카타 78번(피보나치수) (0) | 2024.06.10 |
2024.06.08 TIL 코트카타 76번(JadenCase 문자열 만들기) (1) | 2024.06.08 |