Skip to content

Commit d591cac

Browse files
authored
Merge pull request #765 from AlgorithmWithGod/LiiNi-coder
[20250828] BOJ / G5 / 탑 / 이인희
2 parents ea4f035 + c189023 commit d591cac

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

LiiNi-coder/202508/28 BOJ 탑.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.BufferedWriter;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.io.OutputStreamWriter;
7+
import java.util.Stack;
8+
import java.util.StringTokenizer;
9+
10+
public class Main{
11+
private static BufferedReader Br;
12+
private static int N;
13+
private static int[] Arr;
14+
private static final int MAX = 100_000_001;
15+
private static BufferedWriter Bw;
16+
private static StringBuilder Sb;
17+
18+
public static void main(String[] args) throws IOException {
19+
Br = new BufferedReader(new InputStreamReader(System.in));
20+
N = Integer.parseInt(Br.readLine());
21+
Bw = new BufferedWriter(new OutputStreamWriter(System.out));
22+
Sb = new StringBuilder();
23+
Arr = new int[N + 1];
24+
StringTokenizer st = new StringTokenizer(Br.readLine());
25+
for(int i = 0; i < N; i++){
26+
Arr[i+1] = Integer.parseInt(st.nextToken());
27+
}
28+
29+
Stack<int[]> stack = new Stack<>();
30+
stack.add(new int[]{MAX, 0});
31+
for (int i = 1; i <= N; i++) {
32+
while (!stack.isEmpty() && stack.peek()[0] < Arr[i]) {
33+
stack.pop();
34+
}
35+
// stack.peek()[1] == 0 이면, 수신할 탑 없음
36+
p(stack.peek()[1]);
37+
stack.add(new int[]{Arr[i], i});
38+
}
39+
Bw.write(Sb.toString() + "\n");
40+
Bw.flush();
41+
Bw.close();
42+
Br.close();
43+
}
44+
45+
private static void p(int i){
46+
Sb.append(i + " ");
47+
}
48+
}
49+
```

0 commit comments

Comments
 (0)