
접근법
push X: 정수 X를 스택에 넣는 연산이다.
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 스택에 들어있는 정수의 개수를 출력한다.
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
위의 명령을 처리하는 프로그램
스택의 선언은 다음과 같다. 
Stack<Integer> stack = new Stack<>(); 
push 는 stack.push(숫자) 
pop 은 요소를 제거한 뒤 제거된 수를 반환함. stack.pop()
size 는 stack.size 
empty 는 stack.isEmpty() 이는 boolean 타입으로 리턴된다.
top 의 경우 stack.peek()  이다. 기본적으로 제공되는 메서드를 활용할 수 있으며 시간 초과 방지를 위해
buffer 를 사용하여 작성하며 각 케이스는 swich 로 해결한다.풀이
public class Main {
	public static void main(String[] args) {
        try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
                int N = Integer.parseInt(reader.readLine()); // 명령의 수
                Stack<Integer> stack = new Stack<>();
                for(int i=0; i<N; i++) {
                    String input = reader.readLine();
                    String[] stackList = input.split(" ");
                    String name = stackList[0];
                    // 입력된 명령어에 따른 case 처리
                    switch (name) {
                        case "push": {
                            Integer num= Integer.parseInt(stackList[1]);
                            stack.push(num);
                            break;
                        }
                        case "pop":{
                            if(stack.isEmpty()) {
                                writer.write(String.valueOf(-1)+ "\\n");
                            }else {
                                writer.write(String.valueOf(stack.pop()) + "\\n");
                            }
                            break;
                        }
                        case "size" : {
                            writer.write(String.valueOf(stack.size()) + "\\n");
                            break;
                        }
                        case "empty" : {
                            if(stack.isEmpty()) {
                                writer.write(String.valueOf(1) + "\\n");
                            }else {
                                writer.write(String.valueOf(0) + "\\n");
                            }
                            break;
                        }
                        case "top" : {
                            if(stack.isEmpty()) {
                                writer.write(String.valueOf(-1) + "\\n");
                            }else {
                                writer.write(String.valueOf(stack.peek()) + "\\n");
                            }
                            break;
                        }
                    }
                }
        writer.flush();
        writer.close();
        reader.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
	}
}
Share article