본문 바로가기
programming/알고리즘 풀이

[백준(Baekjoon)/JAVA] 10828. 스택

by 몽구스_ 2021. 2. 14.
728x90

 

 

시간초과가 나서 string builder를 이용해 한번에 모아서 출력을 해주었다.

줄바꿈표시도 해주었다.

일반적인 스택문제라 알고리즘은 어렵지 않았다.

자바로 풀 때는 c로 풀 때 보다 시간초과가 많이 나는 것 같다.

 

import java.util.Scanner;

public class bj10828 {

    static int[] stack;
    static int top = -1;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
	    int n = sc.nextInt();

	    stack = new int[n];
        StringBuilder sb = new StringBuilder();
	    for(int i = 0; i < n; i++){
	        String s = sc.next();
	        switch (s) {
                case "push":
                    int num = sc.nextInt();
                    push(num);
                    break;
                case "size":
                    sb.append(size());
                    sb.append("\n");
                    break;
                case "pop":
                    sb.append(pop());
                    sb.append("\n");
                    break;
                case "empty":
                    sb.append(empty());
                    sb.append("\n");
                    break;
                case "top":
                    sb.append(top());
                    sb.append("\n");
                    break;
            }
        }
        System.out.print(sb);



    }

    static int push(int num){
        top++;
        stack[top] = num;
        return 0;
    }

    static int size(){
        int size = top + 1;
        return size;
    }

    static int pop(){
        if(top > -1){
            return stack[top--];
        }
        else{
            return -1;
        }
    }

    static int empty(){
        if(top > -1){
            return 0;
        }
        else{
            return 1;
        }
    }

    static int top(){
        if(top > -1) {
            return stack[top];
        }
        else{
            return -1;
        }
    }

}

댓글