Coding - Algo/Java
[백준] 2493번:탑 (Java 자바)
jainn
2021. 8. 5. 17:47
728x90
문제
https://www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
풀이 및 소스코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
Stack<Integer> idx = new Stack<>();
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
stack.push(Integer.parseInt(st.nextToken()));
idx.push(1);
sb.append("0");
for (int i = 1; i < n; i++) {
int tmp = Integer.parseInt(st.nextToken());
while(true) {
if (!stack.empty()) {
if (stack.peek() >= tmp) {
sb.append(" "+idx.peek());
stack.push(tmp);
idx.push(i + 1);
break;
} else {
stack.pop();
idx.pop();
}
}else {
sb.append(" 0");
stack.push(tmp);
idx.push(i+1);
break;
}
}
}
System.out.println(sb);
}
}
반응형