백준 17298번
import java.util.Scanner;
import java.util.Stack;
public class problem473 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
int[] arr = new int[size];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < size; i++) {
arr[i] = in.nextInt();
}
for (int i = 0; i < arr.length; i++) {
// stack이 비어있지 않으면서, arr의 stack 인덱스와 arr배열 비교
while (!stack.isEmpty() && arr[stack.peek()] < arr[i]) {
// stack에서 pop을 하면서 값을 할당해줘야한다.
arr[stack.pop()] = arr[i];
}
stack.push(i);
}
// 스택에 남아있는 인덱스 -1 초기화
while (!stack.isEmpty()) {
arr[stack.pop()] = -1;
}
StringBuilder output = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
output.append(arr[i]).append(" ");
}
System.out.println(output.toString());
}
}