본문 바로가기
코딩테스트/문제 풀이

[자바] 백준 28278번 스택 2

by 왕자두 2024. 7. 3.

https://www.acmicpc.net/problem/28278

 

[문제 이해]

덱,,,을 사용해서 쉽게 풀어보려고 했더니 또또 시간초과나고 난리남.. 흠 이유는 모르겠으나 intelliJ에서 돌리면 숫자 명령어에 대해서 출력이 바로 나오지 않는데 도대체 왜 맞은 건지 모르겠다며,, 무튼 문제 자체는 어렵지 않았으나 내일은 BufferedWriter를 진짜 마스터해야겠다고 느꼈다. 문제를 이해하지 못해서 못 푼 게 아니라 입출력에서 시간초과 뜨는 건 너무 하잖아~

 

[문제 풀이]

1이 들어올 때만 약간 다른데 StringTokenizer 이용해서 한 줄에 들어오는 다음 숫자 가져다가 stack에 넣으면 되는 부분이라 크게 어려운 건 없었다.

 

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        Stack<Integer> stack = new Stack<>();
        int N = Integer.parseInt(br.readLine());

        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            String str = st.nextToken();

            switch (str){
                case "1":
                    stack.push(Integer.parseInt(st.nextToken()));
                    break;
                case "2":
                    if(stack.isEmpty()){
                        bw.write("-1\n");
                    }
                    else{
                        bw.write(stack.pop()+ "\n");
                    }
                    break;
                case "3":
                    bw.write(stack.size() + "\n");
                    break;
                case "4":
                    if(stack.isEmpty()){
                        bw.write("1\n");
                    }
                    else{
                        bw.write("0\n");
                    }
                    break;
                case "5":
                    if(stack.isEmpty()){
                        bw.write("-1\n");
                    }
                    else{
                        bw.write(stack.peek() + "\n");
                    }
                    break;
            }
        }
        bw.flush();
        bw.close();
    }
}

 

내일 덱으로도 풀어봐야겠다. 다른 분들꺼 찾아보니까 다 stack으로만 푸셨던데 stack보다 deque으로 푸는 게 더 빠르지 않은가 하는 생각이... (잘모름)