stack
1. stack에 순서대로 인덱스를 담는다.
2. 만약 stack에 원소가 있다면 해당 원소와 지금의 원소를 비교해서 지금의 원소가 "해당 원소보다 뒤에 있는 큰 수"라면 anwer의 해당 원소 인덱스에 지금의 원소를 남긴다.
이 과정 이후에 남은 stack의 원소에는 해당 원소 뒤에 큰 수가 없는 원소만 남는다.
3. 지금 stack에 남아 있는 원소는 각 원소의 뒤의 모든 원소에 대해 큰 수가 없는 원소들만 있으므로 -1로 표시해준다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < numbers.length; i++) {
while(!stack.isEmpty() && numbers[stack.peek()] < numbers[i] ) {
answer[stack.pop()] = numbers[i];
}
stack.push(i);
}
while(!stack.isEmpty()) {
answer[stack.pop()] = -1;
}
return answer;
}
}