개발자 미니민의 개발스터디

[백준 JAVA] 28278번 풀이 - 스택2

by mini_min

package quiz;

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

/**
 * 1 X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
 * 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
 * 3: 스택에 들어있는 정수의 개수를 출력한다.
 * 4: 스택이 비어있으면 1, 아니면 0을 출력한다.
 * 5: 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다.
 *
 * 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000)
 *
 * 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다.
 *
 * 출력을 요구하는 명령은 하나 이상 주어진다.
 */
public class test1006 {
    static Stack<Integer> stack = new Stack<>();
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int test = Integer.parseInt(br.readLine());
        StringTokenizer st;
        for (int i=0; i<test; i++){
            st = new StringTokenizer(br.readLine());
            int orderNum = Integer.parseInt(st.nextToken());
            if(orderNum==1){
                stack.push(Integer.parseInt(st.nextToken()));
            } else if(orderNum==2){
                if(stack.empty()){
                    bw.write(-1+"\n");
                } else {
                    bw.write(stack.pop()+"\n");
                }
            } else if(orderNum==3){
                bw.write(stack.size()+"\n");
            } else if(orderNum==4){
                if(stack.empty()){
                    bw.write(1+"\n");
                } else {
                    bw.write(0+"\n");
                }
            } else if(orderNum==5){
                if(stack.empty()==false){
                    bw.write(stack.peek()+"\n");
                } else{
                    bw.write(-1+"\n");
                }
            }
        }

        bw.flush();
        bw.close();

    }
}

 

풀이

pop() -> top 요소 반환 후 !!! 삭제 

peek() -> top 요소 반환 후 !!! 삭제 xxxx

- Scanner / System.out.println 으로 풀면 '시간초과' 오류 뜸 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기