본문 바로가기

TLI/코드카타

2024.06.13 TIL 코트카타 81번(N개의 최소공배수)

    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. 배열의 끝까지 반복한다.

 

포인트

- 많이 알려져 있는 공식을 사용하지 않고 직접 구하기