stack을 활용하는 문제입니다. numbers를 돌며 stack에 값을 넣을건데, numbers에서 peek보다 큰 수가 나오면(=peek의 뒷큰수라면)
answer가 채워지지 않은 곳까지 가서 채웁니다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int cnt = 0;
int[] answer = new int[numbers.length];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < answer.length; i++) {
answer[i] = -1;
}
for (int i = 0; i < numbers.length; i++) {
int cur = numbers[i];
int idx = i - 1;
while (!stack.isEmpty() && stack.peek() < cur) {
while (answer[idx] != -1) {
idx--;
}
stack.pop();
answer[idx] = cur;
}
stack.add(cur);
}
return answer;
}
}