자료구조와 알고리듬 With Java/[Study] BAEKJOON 프로그래머스 CodeUp LeetCode

Code up 3102 STL stack

계란💕 2022. 3. 18. 17:30

  Ex) 첫째줄에 N이 입력된다. (1<=N<=2001<=N<=200)

둘째 줄 부터 각 줄에 하나씩 명령어 N개가 입력된다.

 

 

출처: https://codeup.kr/problem.php?id=3102

<hide/>
package D220316;

import java.util.Scanner;

interface IStackble100{
	boolean empty();
	void push(int nData);
	int peek();
	void pop();
	void print();
	
}

public class STL implements IStackble100{
	
	private int[] mnArray;
	private int mnCapacity;
	private int mnTop;

	public STL (int nCapacity) { 
		
		mnArray = new int[nCapacity];
		mnCapacity = nCapacity;		
		mnTop = 0;
	}
	
	public boolean empty() { 		
		return (mnTop == 0);
	}
	
	public void push(int nData) {
		if( true == full())  {
			System.out.println("===============\n");
			System.out.println("Stack Overflow!");
			System.out.println("\n");
			return;
		}
		mnArray[mnTop++] = nData;
	}
	
	public int peek() {
		if( true == empty()) {
//			System.out.println("Stack Underflow!");
			return -1;			
		}
		return mnArray[mnTop - 1];
		
	}
	public void pop() {
		if(true == empty()) {
//			System.out.println("Stack Underflow!");
			return;
		}
		--mnTop;
	}
	
	public boolean full() {
		return (mnCapacity == mnTop);
	
	}
// 연습용 프린트	
	public void print(){
	
		System.out.println("===============\n");
		System.out.printf("Stack elements: \n");
			for(int i = 0 ;i < mnTop ; ++i) {		
				System.out.printf("%d ", mnArray[i]);
			
			}
		System.out.println();
		System.out.println("===============\n");
		
	}
	
	
	public static void main(String[] args) {
		
		int nCapacity = 100;
		STL st = new STL(nCapacity);

		Scanner scan = new Scanner(System.in);
		
		int num = scan.nextInt();		// 반복문을 실행할 횟수 
		
		for(int i = 0; i < num; ++i) {
			
			String str = scan.next(); 
		
				if(str.equals("top()")) {
					System.out.println( st.peek());
					
				}else if(str.equals("pop()")) {
					st.pop();	
				}
				
				else if(str.equals("size()")) {
					System.out.println(st.mnTop);
				}
				
				else if( str.equals("empty()")) {
					
					if(st.empty() == true) {
						System.out.println("true");
						
					}else {
						System.out.println("false");
					}	
					
				}else if(str.equals("push(")){
	
					int input = scan.nextInt();
					st.push(input);
					String Braket = scan.next(); 		// push( input ')'를 스캔 처리
				}
		}
//		scan.close();
//		st.print();		// 연습용 출력
		
	}
}

 

  Note) 실행 결과