ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 10828 스택
    ETC/Algorithm 2023. 5. 26. 17:25

    풀이

    • push의 경우에는 명령어에 입력값을 같이 보낸다. 조건문을 통해 push 명령어일 경우 nextToken()을 한번 더 수행하도록 했다.
    • 각 명령어의 경우를 Switch문을 통해서 처리하였다.

    Java에서 top을 구현하기 위해서는 Peek을 사용하는데 내용물이 없으면 오류가 발생한다. 따로 조건 추가해야한다.

    제출코드

    import java.io.*;
    import java.util.*;
    
    class Main {
    
        static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st;
            Stack<Integer> stack = new Stack<>();
    
            int N = Integer.parseInt(br.readLine());
    
            String cmd;
            int x = 0;
            for (int i = 0; i < N; i++) {
                st = new StringTokenizer(br.readLine()," ");
                cmd = st.nextToken();
                if (cmd.equals("push")) {
                    x = Integer.parseInt(st.nextToken());
                }
                switch (cmd) {
                    case "push":
                        stack.push(x);
                        break;
                    case "pop":
                        if (stack.isEmpty()) {
                            bw.write("-1");
                            bw.write("\n");
                        } else {
                            bw.write(String.valueOf(stack.pop()));
                            bw.write("\n");
                        }
                        break;
                    case "size":
                        bw.write(String.valueOf(stack.size()));
                        bw.write("\n");
                        break;
                    case "empty":
                        if (stack.isEmpty()) {
                            bw.write(String.valueOf(1));
                            bw.write("\n");
                        } else {
                            bw.write(String.valueOf(0));
                            bw.write("\n");
                        }
                        break;
                    case "top":
                        if (stack.isEmpty()) {
                            bw.write("-1");
                            bw.write("\n");
                        } else {
                            bw.write(String.valueOf(stack.peek()));
                            bw.write("\n");
                        }
                        break;
                    default:
                        break;
                }
            }
            bw.flush();
        }
    }

    댓글

Designed by black7375.