[BOJ] Q10828: 스택

ddwwon·2022년 11월 3일
0

Algorithm

목록 보기
1/4
post-thumbnail

내 코드

// https://www.acmicpc.net/problem/10828
import java.util.*;

public class Q10828 {
    public static int[] Stack;
    public static int size = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();

        int N = sc.nextInt();
        Stack = new int[N];

        for (int i = 0; i < N; i++) {
            String command = sc.next(); // nextLine 말고 next로 받아줘야 함
            switch (command) {
                case "push":
                    push(sc.nextInt());
                    break;
                case "pop":
                    sb.append(pop()).append('\n');
                    break;
                case "size":
                    sb.append(size).append('\n');
                    break;
                case "empty":
                    sb.append(isEmpty()).append('\n');
                    break;
                case "top":
                    sb.append(top()).append('\n');
                    break;
            }
        }
        System.out.println(sb);
    }

    public static void push(int num) {
        Stack[size] = num;
        size++;
    }

    public static int pop() {
        if (size == 0) {
            return -1;
        } else {
            int temp = Stack[size - 1];
            Stack[size - 1] = 0;
            size--;
            return temp;
        }
    }

    public static int isEmpty() {
        if (size == 0) {
            return 1;
        } else {
            return 0;
        }
    }

    public static int top() {
        if (size == 0) {
            return -1;
        } else {
            return Stack[size - 1];
        }
    }
}
  • 제일 익숙했던, Scanner를 사용했었다. 하지만 Scanner는 매우 느린 함수이기 때문에 시간 초과가 발생한다.
  • 이를 방지하기 위해서 StringBuilder를 사용하는 것이 좋다.
  • 문자열을 입력받을 때는 next를 사용해서 입력받아야 한다.
  • 스택을 사용하는 무난한 문제였던 것 같다.

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

0개의 댓글