백준/스택

10828 스택

have a good time 2021. 10. 27. 13:37
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;


public class Main {

	static ArrayList<Integer> stack; 
	
	  public static void main(String[] args) throws IOException {

		  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		  int N = Integer.parseInt(br.readLine());
		  
		  StringBuilder sb = new StringBuilder();
		 
		 stack = new ArrayList<>();
		  
		  
		  while(N-->0) {
			  StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			  switch(st.nextToken()) {
			  case  "push" :
				  push(Integer.parseInt(st.nextToken()));
				  break;
				  
			  case "pop" :
				  sb.append(pop()).append('\n');
				  break;
				  
			  case "size" :
				  sb.append(size()).append('\n');
				  break;
				  
			  case "empty" :
				  sb.append(empty()).append('\n');
				  break;
				  
			  case "top" :
				  sb.append(top()).append('\n');
				  break;
				  	  
			  }
		  }
		  System.out.println(sb);
		  
	  }
	  
	  
	  
	  
	  public static void push(int N) {
		  stack.add(N);
	  }
	  
	  public static int pop() {
		  if(stack.isEmpty()) {
			  return -1;
		  }else {
			  int output = stack.get(stack.size()-1);
			  stack.remove(stack.size()-1);
			  return output;
		  }
	  }
	  
	  public static int size() {
		  return stack.size();
	  }
	  
	 
	 
	  public static int empty() {
		  if(stack.isEmpty()) return 1;
		  return 0;
	  }
	  
	  public static int top() {
		  if(stack.isEmpty()) return -1;
		  int output = stack.get(stack.size()-1);
		  return output;
	  }
	  
	  
	  
	  
			}

 

아래 참고 자료 블로그에서는 스택을 배열을 이용해 구현했지만, 나는 ArrayList를 사용해봤다.

 

 

 

참고 자료 :

https://st-lab.tistory.com/175

 

[백준] 10828번 : 스택 - JAVA [자바]

www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000..

st-lab.tistory.com