dev.Log

17298 스택 본문

알고리즘

17298 스택

초코푸딩 2022. 9. 13. 10:58
package acmicpc;

import java.io.*;
import java.util.Stack;

public class P17298 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bf.readLine());
        int[] A = new int[n]; //수열 배열
        int[] ans = new int[n]; //정답 배열
        String[] str = bf.readLine().split(" ");
        for(int i=0; i<n ; i++) {
            A[i] = Integer.parseInt(str[i]);
        }
        Stack<Integer> myStack = new Stack<>();
        myStack.push(0);
        for(int i=1; i<n; i++) {
            while(!myStack.isEmpty() && A[myStack.peek()] < A[i]) {
                ans[myStack.pop()] = A[i];
            }
            myStack.push(i);
        } //for
        //반복문을 다 돌고 나왔는데 스택이 비어있지 않다면 빌때까지
        while(!myStack.empty()) {
            //스택에 쌓인 index에 -1을 넣고
            ans[myStack.pop()] = -1;
        }
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        for(int i=0; i<n; i++) {
            bw.write(ans[i] + " ");
        }
        bw.write("\n");
        bw.flush();
    }
}

'알고리즘' 카테고리의 다른 글

11286 우선순위큐에 우선순위 적용하기  (0) 2022.09.13
2164 큐  (0) 2022.09.13
스택 P1874  (0) 2022.09.12
Deque<Node> deque = new LinkedList<>();  (0) 2022.09.12
1253 투포인터  (0) 2022.09.08
Comments