본문 바로가기

백준 문제풀기/JAVA

[백준 10828 JAVA 자바] 스택

 

스택을 구현해봅시다

 

스택의 특징은

입구와 출구가 같다는 겁니다

 

넣기 기능과 빼기 기능을 구현했을 때

나중에 넣은거를 먼저 빼는 특징이 있습니다

 

코드입니다

 

import java.util.Scanner;

public class Main {
	
	public static int[] stack;
	public static int size = 0;
 
 
	public static void main(String[] args) {
 
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		
		int N = scan.nextInt();
 
		stack = new int[N];
		
		for(int i = 0; i < N; i++) {
        
			String str = scan.next();
 
			switch (str) {            
			case "push":
				push(scan.nextInt());
				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 item) {
		stack[size] = item;
		size++;
	}
    
	public static int pop() {
		if(size == 0) {
			return -1;
		}else {
			int res = stack[size - 1];
			stack[size - 1] = 0;
			size--;
			return res;
		}
	}
    
	public static int size() {
		return size;
	}
    
	public static int empty() {
		if(size == 0) {
			return 1;
		}else {
			return 0;
		}
	}
    
	public static int top() {
		if(size == 0) {
			return -1;
		}else {
			return stack[size - 1];
		}
	}

}

 

push pop size empty top 함수를 각각 구현해줍시다