본문 바로가기
Algorithm/백준풀이

[알고리즘 문제풀이] 백준 10828 스택 (JAVA코드)

by 계범 2022. 2. 27.

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

 

10828번: 스택

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

www.acmicpc.net

/**
 * 1. n개의 명령의 수가 들어오고,
 * 
 * 2. stack을 구현하여 명령을 처리
 * 
 * 3. pop이나 size나 empty, top은 해당하는 숫자를 출력
 * 
 */

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

public class Test {
    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());

        StringTokenizer st;

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

            String command = st.nextToken();
            
            if(command.equals("push")){
                int num = Integer.parseInt(st.nextToken());
                stack.push(num);
            }else if(command.equals("top")){
                int num = (stack.isEmpty() == true) ? -1 : stack.peek();
                bw.write(num + "\n");
            }else if(command.equals("size")){
                bw.write(stack.size() +"\n");
            }else if(command.equals("pop")){
                int num = (stack.isEmpty() == true) ? -1 : stack.pop();
                bw.write(num + "\n");
            }else{
                int num = (stack.isEmpty() == true) ? 1 : 0;
                bw.write(num + "\n");
            }
        }

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

}
// stack에 데이터 추가
        // stack.push(3);
        // stack.push(6);

        // stack의 가장 나중에 넣은 값을 제거하고 반환
        // stack.pop();

        // stack에 가장 나중에 넣은 값을 반환
        // stack.peek();

        // stack에 담긴 내용물의 개수 반환
        // stack.size();

        // stack 비어있는지 체크(true, false 반환)
        // stack.isEmpty();

댓글