[백준 10828번 / Java] 스택

P.S./백준 2023. 7. 1. 07:27
728x90
728x90

문제 링크

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

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net


 

 

풀이

단순 스택을 구현하는 문제로, List배열을 사용했음

아래 사진은 StringBuffer와 System.out.print의 시간 차이 (중간에는 stringbuffer을 sysout해주지 않음....)

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class BaekJoon10828 {

    static List<Integer> stack = new ArrayList<>();
    static StringBuffer sb = new StringBuffer();

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

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

        for(int i = 0; i < N; i++){
            st = new StringTokenizer(br.readLine(), " ");

            switch(st.nextToken()){
                case "push": push(Integer.parseInt(st.nextToken()));
                    break;
                case "pop" : pop();
                    break;
                case "size" : size();
                    break;
                case "empty" : empty();
                    break;
                case "top" : top();
                    break;
            }
        }
        System.out.println(sb.toString());
    }
    private static void push(int i) {
        stack.add(i);
    }

    private static void pop() {
        if(stack.isEmpty()) sb.append(-1 + "\n");
        else{
            sb.append(stack.remove(stack.size() - 1) + "\n");
        }
    }

    private static void size() {
        sb.append(stack.size() + "\n");
    }

    private static void empty() {
        if(stack.isEmpty()) sb.append(1 + "\n");
        else sb.append(0 + "\n");
    }
    private static void top() {
        if(stack.isEmpty()) sb.append(-1 + "\n");
        else sb.append(stack.get(stack.size() - 1) + "\n");
    }

}
728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

방명록