728x90
풀이
fun solution(numbers: IntArray): IntArray {
val result = IntArray(numbers.size){-1}
val stack = Stack<Pair<Int, Int>>()
for(numberIndex in numbers.indices){
val compareNumber = numbers[numberIndex]
if(stack.isEmpty()){
stack.push(Pair(numberIndex, compareNumber))
}
else{
/**
* 설명
* - stack 이 비어있을때 peek, pop 을 시도하면 EmptyStackException 이 발생한다.
* - 따라서 while 조건문 내부에서 stack.peek() 를 바로 시도하게 되면 안된다.
* - 그렇기 떄문에 stack.empty() 를 선행조건으로 두어 먼저 검사하게 처리하여야 한다.
* -
* */
while(stack.isNotEmpty() && stack.peek().second < compareNumber){
val lastStackedPair = stack.pop()
result[lastStackedPair.first] = compareNumber
}
stack.push(Pair(numberIndex, compareNumber))
}
}
return result
}
출처
풀이
728x90
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 :: 연습문제 :: 연속된 부분 수열의 합 (0) | 2023.04.30 |
---|---|
프로그래머스 :: 연습문제 :: 무인도 여행 (0) | 2023.02.21 |
프로그래머스 :: 연습문제 :: 테이블 해시 함수 (0) | 2022.12.25 |
프로그래머스 :: 연습문제 :: 혼자 놀기의 달인 (0) | 2022.12.12 |
프로그래머스 :: 연습문제 :: 점찍기 (0) | 2022.12.05 |