#java

스택

Jan 17, 2023


스택

문제

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 다섯 가지이다.

입력

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

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

예제 입력/출력


풀이

사용자에게 입력을 받는 형태와, Method 파라미터로 입력 받는 형태를 모두 정의함

소스

import java.util.ArrayList;
import java.util.Scanner;

public class Matter10828 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 입력 받을 명령 수
        int commandCnt = sc.nextInt();
        // 스택 : ArrayList
        ArrayList<Integer> stack = new ArrayList<>();
        sc.nextLine();

        for(int i=0; i<commandCnt; i++) {
            // 명령어
            String command = sc.nextLine();
            // 명령어 인자
            String[] params = command.split(" ");

            switch (params[0]) {
                case "push":
                    stack.add(Integer.parseInt(params[1]));
                    break;
                case "pop":
                    if(stack.size() == 0)
                        System.out.println(-1);
                    else {
                        System.out.println(stack.get(stack.size() - 1));
                        stack.remove(stack.size() - 1);
                    }
                    break;
                case "size": System.out.println(stack.size());
                    break;
                case "empty":
                    if(stack.size() == 0)
                        System.out.println(1);
                    else
                        System.out.println(0);
                    break;
                case "top":
                    if(stack.size() == 0)
                        System.out.println(-1);
                    else
                        System.out.println(stack.get(stack.size() - 1));
                    break;
                default : break;
            }
        }
    }
}


*****

© 2021, Ritij Jain | Pudhina Fresh theme for Jekyll.