개인공부/알고리즘

프로그래머스 - 최댓값 만들기(2) (Kotlin)

KEEMSY 2023. 7. 28. 14:19

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이는 간단하다. 가장 큰 값과 두번째로 큰 값 끼리의 곱과, 가장 작은 값과 두번째로 작은값 끼리의 곱 중 더 큰 값을 반환하면 된다.

 

class Solution {
    fun solution(numbers: IntArray): Int {
        var max1 = Int.MIN_VALUE
        var max2 = Int.MIN_VALUE
        var min1 = Int.MAX_VALUE
        var min2 = Int.MAX_VALUE

        for (number in numbers) {
            if (number >= max1) {
                max2 = max1
                max1 = number
            } else if (number >= max2) {
                max2 = number
            }

            if (number <= min1) {
                min2 = min1
                min1 = number
            } else if (number <= min2) {
                min2 = number
            }
        }

        val maxProduct = max1 * max2
        val minProduct = min1 * min2

        return maxOf(maxProduct, minProduct)
    }
}

 

 

이렇게 풀이를 했는데, 다른사람의 풀이를보니 좀더 깔끔하게 작성할 수 있었다.

 

class Solution {
    fun solution(numbers: IntArray): Int {
        val sorted = numbers.sorted()
        return maxOf(sorted[0] * sorted[1], sorted[sorted.lastIndex] * sorted[sorted.lastIndex - 1])
    }
}

왜 정렬을 생각안했을까..

728x90