1. 문제
2. 풀이
자바 Collections클래스를 사용하여 스택을 구현하였다.
명령어 push 3은 문자열 push,공백,숫자 로 이루어진 문자열이므로 명령을 입력했을때 공백이 있을 경우, push명령을 처리하도록 해주었고 다른 명령어들은 switch문을 사용하였다.
이 때, stack.empty()에서 기본으로 제공하는 것은 true, false인데 문제에서 요구하는 것은 1,0이므로 함수를 수정해주었다. 스택의 기본 개념만 이해한다면 쉽게 풀 수 있는 문제였다.
3. 소스코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.valueOf(br.readLine()); // 명령의 수
Stack<Integer> stack = new Stack<Integer>(); // 스택생성
while (n > 0) {
String s = br.readLine();
if (s.length() >= 6 && s.charAt(4) == ' ') {
Integer word = Integer.parseInt((s.split(" ")[1])); // 공백 다음 숫자 가져오기
stack.push(word);
} else {
switch (s) {
case "pop":
if (stack.empty()) {
System.out.println(-1);
} else {
System.out.println(stack.pop());
}
break;
case "size":
System.out.println(stack.size());
break;
case "empty":
if (stack.empty()) {
System.out.println(1); // 비어있음
} else {
System.out.println(0);
}
break;
case "top":
if (stack.empty()) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
break;
}
}
n--;
}
}
}
'알고리즘 풀이 > 백준(BOJ)' 카테고리의 다른 글
[JAVA/백준9012] 괄호 - 스택 (0) | 2019.06.08 |
---|---|
[JAVA/백준1003] 피보나치 함수 DP (0) | 2019.06.04 |
[JAVA/백준9095] 1,2,3 더하기 DP (0) | 2019.06.02 |
[JAVA/백준11726] 2xn 타일링 DP (0) | 2019.06.02 |
[JAVA/백준10818] 최소, 최대 (0) | 2019.05.31 |