문제 풀이는 간단하다. 가장 큰 값과 두번째로 큰 값 끼리의 곱과, 가장 작은 값과 두번째로 작은값 끼리의 곱 중 더 큰 값을 반환하면 된다.
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
'개인공부 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 동명 동물 수 찾기 (MySQL) (0) | 2023.07.30 |
---|---|
프로그래머스 - 고양이와 개는 몇마리 있을까? (MySQL) (0) | 2023.07.29 |
프로그래머스 - 다항식 더하기 (Kotlin) (0) | 2023.07.27 |
프로그래머스 - 숨어있는 숫자의 덧셈(2) (Kotlin) (0) | 2023.07.27 |
프로그래머스 - 안전지대 (Kotlin) (0) | 2023.07.26 |