메모
/*
해당 명령어들은 '스택'을 기준으로 함
push X = 정수X 넣기
pop = 가장 위 정수 빼서 출력 (단, 정수가 없다면 -1 출력)
size = 정수 개수 출력
empty = 비어 있으면 1, 아니면 0 출력
top = 가장 위 정수 출력 (단, 정수가 없다면 -1 출력)
*/
import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException { // BuffredReader 사용 시, 예외처리가 필요
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // BufferedReader 선언
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // BufferedWriter 선언
Stack<Integer> s = new Stack<>(); // 스택 사용
int num = Integer.parseInt(br.readLine()); // string 으로 고정된 값을 int 타입으로 형 변환시키기
for (int i = 0; i < num; i++) {
String[] input = br.readLine().split(" "); // 공백 단위로 데이터 가공을 위해, 각 데이터를 배열에 넣기
switch (input[0]) {
case "push": // 정수X 넣기
s.push(Integer.parseInt(input[1]));
break;
case "pop": // 가장 위 정수 빼서 출력 (단, 정수가 없다면 -1 출력)
if (s.empty()) {
bw.write("-1" + "\n");
} else {
bw.write(s.pop() + "\n");
}
break;
case "size": // 정수 개수 출력
bw.write(s.size() + "\n");
break;
case "empty": // 비어 있으면 1, 아니면 0 출력
if (s.empty()) {
bw.write("1" + "\n");
} else {
bw.write("0" + "\n");
}
break;
case "top": // 가장 위 정수 출력 (단, 정수가 없다면 -1 출력)
if (s.empty()) {
bw.write("-1" + "\n");
} else {
bw.write(s.peek() + "\n"); // 마지막 데이터 반환
}
break;
}
}
bw.flush();
bw.close();
}
}
스택(stack)
BufferedReader, Bufferedwriter
Integer.parseInt() : 문자열 -> 숫자 형 변환
\n
참고: [Java] 줄바꿈 하기 (\n, \r, \r\n 의 차이)