[문제 링크]
[문제 풀이]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
private static Stack<Integer> stack = new Stack<>();
private static String s;
private static StringTokenizer st;
private static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
s = st.nextToken();
makeStack();
}
System.out.println(sb);
}
private static void makeStack() {
if (s.equals("push")) {
stack.push(Integer.parseInt(st.nextToken()));
} else if (s.equals("pop")) {
if (stack.empty()) sb.append("-1").append("\\n");
else sb.append(stack.pop()).append("\\n");
} else if (s.equals("size")) {
sb.append(stack.size()).append("\\n");
} else if (s.equals("empty")) {
if (stack.empty()) sb.append("1").append("\\n");
else sb.append("0").append("\\n");
} else if (s.equals("top")) {
if (stack.empty()) sb.append("-1").append("\\n");
else sb.append(stack.peek()).append("\\n");
}
}
}
push
명령 같은 경우에는 문자와 숫자를 분리해야 하기 때문에 StringTokenizer
를 생성하여 사용하였다.
nextToken()
메소드를 사용하여 구분한 다음 토큰을 가져온다.
BufferedReader
로 입력받은 문자열을 공백으로 구분하고, 이 메소드를 사용해서 첫 번째 토큰값을 가져온다.if
문으로 경우를 나누고, equals()
메소드를 이용하여 가져온 토큰값과 문자열을 비교한다.StringBuilder
를 사용하여 문자열을 붙여준다.[참고 자료]
자바 StringBuilder 사용법 및 사용하는 이유
[Github 코드]