mondegreen

[240325] 알고리즘 리부트 38일차 - 백준 10828 자바 본문

알고리즘 풀이 및 리뷰/[패캠] 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 리뷰

[240325] 알고리즘 리부트 38일차 - 백준 10828 자바

앙갱 2024. 3. 25. 20:17
반응형

[Part2-Chapter02-Clip01]

-백준 10828 스택

자바 공식문서에 따르면 스택 같은 경우 아주 예전 자료구조인 Vector를 상속해 만든 Stack 보다 Deque를 이용해 stack을 구현하는 것을 권장하고 있다. deque은 양방향에서 삽입 삭제가 가능하기 때문에 스택과 큐로 모두 구현 가능하기 때문이다. 그럼 이 Deque을 활용해서 stack 문제를 풀어보자. 

package BaekJoon.stack;

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

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

        int commNum = Integer.parseInt(br.readLine());

        // Deque으로 구현
        Deque<Integer> stk2 = new ArrayDeque<>();

        StringBuilder sb = new StringBuilder();

        while (commNum-- > 0) {
            String[] comm = br.readLine().split(" ");

            switch (comm[0]) {
                case "push":
                    int num = Integer.parseInt(comm[1]);
                    stk2.addFirst(num);
                    break;
                case "pop":
                    if (stk2.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(stk2.pollFirst() + "\n");
                    break;
                case "size":
                    sb.append(stk2.size() + "\n");
                    break;
                case "empty":
                    if (stk2.isEmpty()) sb.append(1 + "\n");
                    else sb.append(0 + "\n");
                    break;
                case "top":
                    if (stk2.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(stk2.peekFirst() + "\n");
                    break;
            }
        }
        System.out.println(sb);
    }
}
반응형