본문 바로가기

이론/문제풀이

[백준 알고리즘 - 10828] 스택 구현하기 - java

2018. 5. 17에 작성된 네이버블로그 글입니다


계속 런타임 에러나는데 나는 이게 메모리 문제인줄 알고 쓸데 없이 삽질함.
결론 - Degenerate Case 꼼꼼하게 확인하자 

java.util 의 Stack 을 사용하면 훨씬 깔끔해지겠지만,
오랜만의 코딩이니까 직접 구현해보겠다




import java.util.Scanner; 
public class Main { 
  public static void main(String[] args) { 
    Scanner scan=new Scanner(System.in); 
    int index=scan.nextInt(); 
    scan.nextLine(); // 입력 받을 명령어 수를 입력한 후 엔터를 치는게 for문 안 nextLine에 먹혀서 미리 한 번 해줌
    Stack stack= new Stack(); 
    for(int i=0; i++)
    {
        String command=scan.nextLine(); 
        if(command.contains(" ")) { 
        int num=Integer.parseInt(command.split(" ")[1]); 
        stack.push(num);	 
    } 
      if(command.equals("pop")) 
         System.out.println(stack.pop()); 
      if(command.equals("size")) 
         System.out.println(stack.size()); 
      if(command.equals("empty"))  
         System.out.println(stack.empty());     
      if(command.equals("top")) 
         System.out.println(stack.top()); 
    } 
  } 
} 
class Stack{ 
  int[] array=new int[10000]; 
  int Top=0; 

  int pop() { 
    if(Top==0) return -1; 
    return array[--Top]; 
  } 
  void push(int n) { 
    array[Top++]=n;  
  } 
  int size() { 
    return Top; 
  } 
  int empty() { 
    if(Top==0) return 1; 
    return 0; 
  } 
  int top() { 
    if(Top==0) return -1; 
    return array[Top-1]; 
  }
}