/ BOJ

BOJ_10828_스택_JAVA

문제 : 스택

링크 : BOJ_10828_스택

접근 방식

스택을 구현하는 문제이다. Java에서는 Stack 클래스를 이용하여 구현할 수 있고, List를 통해 비슷한 기능을 구현할 수도 있다.

풀이 방법

이 문제를 풀 때는 스택 클래스 존재 여부를 몰랐기 때문에, 나는 List를 통해서 해당 기능들을 구현했다. 먼저 stack이라는 ArrayList를 전역으로 선언했다.

push X : 정수를 인자값으로 받아서 stack에 add시킨다.

pop : stack의 가장 끝에 있는 노드를 출력 후 삭제시킨다. stack에 값이 들어있지 않은 경우 -1을 출력한다.

size : stack의 size를 리턴한다.

empty : stack에 값이 들어있지 않은 경우 1을 출력, 값이 있는 경우 0을 출력한다.

top : stack의 가장 끝에 있는 노드를 출력한다. stack에 값이 들어있지 않은 경우 -1을 출력한다.

소스 코드

package com.ssafy.boj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class BOJ_10828_스택 {

	static ArrayList<Integer> stack = new ArrayList<>();
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(in.readLine());

		for(int i=0;i<N;i++) {
			String[] str = in.readLine().split(" ");
			switch(str[0]) {
			case "push":
				push(Integer.parseInt(str[1]));
				break;
			case "pop":
				pop();
				break;
			case "size":
				size();
				break;
			case "empty":
				empty();
				break;
			case "top":
				top();
				break;
			}
		}

	}


	public static void push(int X) {
		stack.add(X);
	}

	public static void pop() {
		if(stack.size() == 0) {
			System.out.println("-1");
		}else {
			System.out.println(stack.get(stack.size()-1));
			stack.remove(stack.size()-1);
		}
	}

	public static void size() {
		System.out.println(stack.size());
	}

	public static void empty() {
		if(stack.size() == 0) {
			System.out.println("1");
		} else {
			System.out.println("0");
		}
	}

	public static void top() {
		if(stack.size() == 0) {
			System.out.println("-1");
		}else {
			System.out.println(stack.get(stack.size()-1));
		}
	}

}