코딩테스트/BOJ

[BOJ] 2493 탑 - JAVA

5월._. 2022. 2. 7.
728x90

1. 문제


2. 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class BOJ_2493_탑 {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(in.readLine());

        StringTokenizer st = new StringTokenizer(in.readLine());
        int[] top = new int[N];

        for (int i = 0; i < N; i++) {
            top[i] = Integer.parseInt(st.nextToken());
        }

        StringBuilder sb = new StringBuilder();

        //탐색
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < N; i++) {
            while (!stack.isEmpty() && top[stack.peek()] < top[i]) {
                stack.pop();
            }

            if (stack.isEmpty()) sb.append("0 ");
            else sb.append(stack.peek() + 1).append(" ");

            stack.push(i);
        }

        //출력
        System.out.println(sb);
    }
}

2022.02.05 - [알고리즘/BOJ] - [BOJ] 17298 오큰수 - JAVA 와 비슷한 문제라 빠르게 풀었다. 

오큰수와 다른 점은 이 문제에서는 인덱스를 push 했다는 것 말고 없다. 문제에서 요구하는 위치는 1부터 시작하므로 답을 출력할 때만 +1 해주었다.  


3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 2605 줄세우기 - JAVA  (0) 2022.02.09
[BOJ] 2309 일곱난쟁이 - JAVA  (0) 2022.02.09
[BOJ] 5430 AC - JAVA  (0) 2022.02.07
[BOJ] 1021 회전하는 큐 - JAVA  (0) 2022.02.07
[BOJ] 10866 덱 - JAVA  (0) 2022.02.07

댓글