코딩테스트

백준 - 10828번 스택(Stack)

NellKiM 2025. 4. 9. 23:19
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main_10828 {

	public static void main(String[] args) throws Exception{
	  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	  
	  StringBuilder sb = new StringBuilder();
	  
	  //정수형 데이터 저장할 수 있는 스택 객체생성
	  Stack<String> stack = new Stack<>();
	  
	  int N = Integer.parseInt(br.readLine()); //명령어 개수
	  
	  int size=0; //요소의 개수를 표현,  size() 또는 isEmpty() 메서드를 호출 안해도 됨.
	  
	  for(int i=1; i<=N; i++) {
		  String command = br.readLine();
		  boolean flag = true;
//		  StringTokenizer tokens = new StringTokenizer( br.readLine());
//		  String command = tokens.nextToken();
		  
		  //명령어를 if~else if~ else 또는 switch~case를 통해 구분하기!!
//		  if(command.equals("push")) {}else if(command.equals("pop")) {}
		  
		  switch(command) {//프로그램의 가독성을 높여줌		     
		    case "pop": //가장 마지막에 입력된 값 출력! => 비어 있으면 -1
//		    	   if( stack.isEmpty() ) System.out.println(-1);
//		    	   else System.out.println(stack.pop());   //출력되어지는 값이 많으므로 모아서 출력 !!
		    	
//		    	   if( stack.isEmpty() ) sb.append(-1);
		    	   if( size==0 ) sb.append("-1");
		    	   else {
		    		   sb.append(stack.pop());   //출력되어지는 값이 많으므로 모아서 출력 !!
		    	       size--;
		    	   }
		    	   break;
		    case "size": sb.append(size);
		    	  break;
		    case "empty": if(size==0) sb.append("1");//비어있음 참
		                  else sb.append("0");//비어있음 거짓
		    	  break;
		    case "top": if(size==0) sb.append("-1"); 
		                else sb.append(stack.peek());
		    	  break;
		    default:// "push":
//		    	  command ==> "push 1"
		    	StringTokenizer tokens = new StringTokenizer(command);
		    	tokens.nextToken(); //"push" 스킵
		    	stack.push(tokens.nextToken()); //"1"		
		    	size++;//요소추가
		    	flag = false;
		  }//한개의 명령어 처리 switch
		  
		  if(flag)sb.append('\n');
		  
	  }//명령어들 처리 for
	  
	  
	  System.out.println(sb.toString());
      br.close();
	}//main

}