Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 그리디
- 백트래킹
- 세그먼트 트리
- 빠른 입출력
- 조합
- 중복 순열
- 클래스
- lis
- 크루스칼
- BeautifulSoup
- 비트마스크
- 분할 정복
- 링크드리스트
- DP
- 피보나치 수
- 재귀
- 메모리풀
- 스택
- 시뮬레이션
- 큐
- 이분 탐색
- SSAFY
- BFS
- MST
- 우선순위 큐
- dfs
- Knapsack
- 완전 탐색
- 순열
- 문자열
Archives
- Today
- Total
작심 24/7
[백준] 2493번 탑 (JAVA) 본문
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
stack에 탑의 위치, 높이를 저장한 후
stack의 top 값 (= 이전 탑의 길이) < 현재 탑의 길이
일 경우
그 탑에 수신할 수 없으므로 stack에 있는 값은 더이상 필요 없기 때문에
stack의 top 값 (= 이전 탑의 길이) > 현재 탑의 길이
가 될 때까지 (= 수신할 수 있는 탑이 나올 때까지)
계속 pop 해버린다.
→ 수신할 수 있는 탑을 만나면
그 탑의 위치를 출력하고
현재 탑의 정보를 저장한다.
→ stack이 empty 상태가 되면
수신할 수 있는 탑이 없다는 뜻이므로 0을 출력하고
현재 탑의 정보를 저장한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class BOJ_2493_탑 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer stz = new StringTokenizer(br.readLine());
Stack<int[]> st = new Stack<>();
for(int n = 1; n <= N; n++) {
int current = Integer.parseInt(stz.nextToken()); // 현재 탑의 높이
while(!st.empty()) {
if(st.peek()[1] < current) st.pop(); // 이전 탑의 높이가 현재 높이보다 작으면 필요 없으므로 pop
else { // 이전 탑의 높이가 현재 높이보다 크면 여기에 수신하므로 이전 탑의 높이 출력
System.out.print(st.peek()[0] + " ");
break;
}
}
if(st.isEmpty()) System.out.print("0 "); // 스택이 비었다는 것은 수신할 탑이 없다는 뜻이므로 0 출력
st.push(new int[] {n, current}); // 다음 탑과의 비교를 위해 현재 탑도 push (탑의 위치, 탑의 높이)순서임
}
}
}
'백준' 카테고리의 다른 글
[백준] 2206번 벽 부수고 이동하기 (JAVA) (0) | 2021.02.15 |
---|---|
[백준] 9466번 텀 프로젝트 (JAVA) (0) | 2021.02.13 |
[백준] 3085번 사탕 게임 (JAVA) (0) | 2021.02.03 |
[백준] 1753번 최단경로 (C++, JAVA) (0) | 2020.09.08 |
[백준] 11062번 카드 게임 (0) | 2020.09.04 |
Comments