728x90
https://www.acmicpc.net/problem/2493
1. 들어오는 순서대로 스택에 값이 있다면 높이를 비교한다.
2. 스택에서 peek한 높이가 더 높을 경우에는 해당 값이 수신하는 건물이 된다.
3. 더 낮을 경우에는 이 건물의 영향을 받지 않을 것이기 때문에 pop한다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static class Node {
int height,index;
Node(int height,int index){
this.height=height;
this.index=index;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Stack<Node> s = new Stack<>();
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i <= n; i++) {
int h = Integer.parseInt(st.nextToken());
int result = 0;
while (!s.isEmpty()) {
Node temp = s.peek();
if (h < temp.height) {
result=temp.index;
break;
}else s.pop();
}
sb.append(result).append(" ");
s.add(new Node(h,i));
}
System.out.println(sb);
}
}
'Java' 카테고리의 다른 글
[백준 1238] 파티 (JAVA) (0) | 2023.05.04 |
---|---|
[백준 2580] 스도쿠 (JAVA) (0) | 2023.05.03 |
[백준 15663] N과 M (9) (JAVA) (0) | 2023.05.02 |
[백준 15657] N과 M(8) (JAVA) (0) | 2023.05.01 |
[백준 15649] N과 M (JAVA) (0) | 2023.05.01 |