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));
}
}
}