728x90
https://www.acmicpc.net/problem/2493
풀이
- stack에 탑의 위치, 높이를 저장
- 이전 탑의 길이) < 현재 탑의 길이
- 이전 탑 pop()
- 이전 탑의 길이) > 현재 탑의 길이
- 이전 탑의 위치 표기
- 수신할 수 있는 탑이 없으면
- 0 표기
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Stack<int[]> stack = new Stack<>();
for (int n = 1; n <= N; n++) {
// 현재 탑의 높이
int current = Integer.parseInt(st.nextToken());
while (!stack.empty()) {
// 이전 탑의 높이가 현재 높이보다 작으면 필요 없으므로 pop
if (stack.peek()[1] < current) {
stack.pop();
}
// 이전 탑의 높이가 현재 높이보다 크면 여기에 수신하므로 이전 탑의 높이 출력
else {
System.out.print(stack.peek()[0] + " ");
break;
}
}
// 스택이 비었다는 것은 수신할 탑이 없다는 뜻이므로 0 출력
if (stack.isEmpty()) {
System.out.print("0 ");
}
// 현재 탑(탑의 위치, 탑의 높이) push
stack.push(new int[]{n, current});
}
}
}
728x90
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준] 7662 이중 우선순위 큐 자바(Java) (0) | 2023.06.19 |
---|---|
[백준] 6198 옥상 정원 꾸미기 자바(Java) (0) | 2023.04.13 |
[백준] 1874 스택 수열 자바(Java) (0) | 2023.04.09 |
[백준] 20165 인내의 도미노 장인 호석 자바(Java) (0) | 2023.03.04 |
[백준] 16924 십자가 찾기 자바(Java) (0) | 2023.02.28 |
댓글