[알고리즘] 2493. 탑
2024. 2. 18. 15:45ㆍAlgorithm/with Java
0. 문제
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
1. 문제 이해
2. 제출
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class BOJ2493 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// 입력
int N = Integer.parseInt(st.nextToken());
int[] map = new int[N+1];
int[] ret = new int[N+1];
// 높이
st = new StringTokenizer(br.readLine());
for(int i=1; i<=N; i++) {
map[i] = Integer.parseInt(st.nextToken());
}
// 수신받는 타워 구하기
Stack<Integer> stk = new Stack<>();
for(int i=N; i>0; i--) { // 뒤에서부터
while(!stk.isEmpty()) {
// 감소세
if(map[i] < map[stk.peek()]) break;
//상승세
ret[stk.pop()] = i;
}
stk.push(i);
}
//출력
StringBuffer sb = new StringBuffer();
for(int i=1; i<=N; i++) {
sb.append(ret[i]).append(" ");
}
System.out.println(sb.toString());
br.close();
}
}
'Algorithm > with Java' 카테고리의 다른 글
[알고리즘] 1991. 트리 순회 (0) | 2024.02.18 |
---|---|
[알고리즘] 1713. 후보 추천하기 (0) | 2024.02.18 |
[알고리즘] 9229. 한빈이와 Spot Mart (0) | 2024.02.18 |
[알고리즘] 1233. 사칙연산 유효성 검사 (0) | 2024.02.18 |
[Java] 비트 마스킹, Next_Permutation (0) | 2024.02.18 |