정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
4 ≤ numbers의 길이 ≤ 1,000,000
1 ≤ numbers[i] ≤ 1,000,000
내 코드
class Solution {
fun solution(numbers: IntArray): IntArray {
val stack = mutableListOf<Int>()
var answer = IntArray(numbers.size) { -1 }
for (i in numbers.indices.reversed()) {
while (stack.isNotEmpty() && stack.last() <= numbers[i]) {
stack.removeAt(stack.lastIndex)
}
if (stack.isNotEmpty() && stack.last() > numbers[i]) {
answer[i] = stack.last()
}
stack.add(numbers[i])
}
return answer
}
}
스택을 이용해서 풀었다.
numbers를 역순으로 배치한뒤 스택에 넣고 값을 비교하면서 스택보다 수가 낮으면 answer에 집어 넣었다.