import java.io.*;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static Stack<int[]> stack = new Stack<>();
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
int temp = Integer.parseInt(st.nextToken());
while (!stack.isEmpty()) {
if (stack.peek()[0] < temp) stack.pop();
else {
sb.append(stack.peek()[1] + " ");
break;
}
}
if (stack.isEmpty())
sb.append(0 + " ");
stack.push(new int[] {temp, i+1});
}
System.out.println(sb);
}
}
int
타입 배열을 넣는데, 인자는 높이와 번호이다.peek()
메소드를 적절히 사용할 것.이 문제를 풀 때, '하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다' 라는 조건을 제대로 읽지 않고 풀다가 몇 시간동안 고민했다.
'맞왜틀' 과정을 거치고 엉뚱한데서 저 조건을 읽지 않았음을 깨닫게 되자 바로 답을 도출해 낼 수 있었다.