Algorithm

Baekjoon / 10828 스택

Dear-J 2025. 3. 20. 21:04

 

한쪽에서만 원소를 넣었다 뺄 수 있는 자료구조

>> 후입선출(LIFO)

 

주요 Method

 

풀이

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

public class S10828 {
    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++){
            String s = br.readLine();

            if (s.contains("push")) {
                String split[] = s.split(" ");
                stack.push(Integer.parseInt(split[1]));
            } else if (s.contains("pop")) {
                if (stack.empty()) {
                    bw.write(-1 + "\n");
                }
                else {
                    bw.write(stack.pop() + "\n");
                }
            } else if (s.contains("size")) {
                bw.write(stack.size() + "\n");
            } else if (s.contains("empty")) {
                if (stack.empty()) {
                    bw.write(1 + "\n");
                }
                else {
                    bw.write(0 + "\n");
                }
            } else if (s.contains("top")) {
                if (stack.empty()) {
                    bw.write(-1 + "\n");
                }
                else {
                    bw.write(stack.peek() + "\n");
                }
            }
        }
        bw.flush();
    }
}

 

for문 대신 switch문을 써서 case별로 나누고

각 case의 메서드를 따로 만들어서 사용하면

>> 좀 더 직관적으로 코드를 확인할 수 있을 것으로 판단

'Algorithm' 카테고리의 다른 글

Baekjoon / 1874 스택 수열  (0) 2025.04.01
Baekjoon / 9012 괄호  (0) 2025.03.31
Baekjoon / 9093 단어 뒤집기  (0) 2025.03.30