- 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세운다.
2. 각 탑의 꼭대기에 레이서 송신기 설치
- 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사
4. 탑의 기둥 모두에는 레이저 신호 수신 장치 설치되어 있음
- 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신 가능
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
ArrayDeque<Integer> stack = new ArrayDeque<>();
ArrayDeque<Integer> index = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
int n = Integer.parseInt(st.nextToken());
if (stack.isEmpty()) {
sb.append("0 ");
stack.push(n);
index.push(i);
} else {
while (true) {
if (stack.isEmpty()) {
sb.append("0 ");
stack.push(n);
index.push(i);
break;
}
if (stack.peek() > n) {
sb.append(index.peek()).append(" ");
stack.push(n);
index.push(i);
break;
} else {
stack.pop();
index.pop();
}
}
}
}
System.out.println(sb);
br.close();
}
}