728x90
코드 힌트
Stack 사용하기
- Stack은 LIFO(Last In, First Out) 구조로, 나중에 들어온 데이터가 먼저 나가는 방식입니다. 스택을 사용하면 데이터를 추가(push), 제거(pop), 확인(peek)할 수 있습니다.
push 명령어 처리하기
- push 명령어가 입력되면, 스택에 새로운 값을 추가해야 합니다. 명령어에 따라 입력된 값을 스택에 넣습니다.
top 명령어 처리하기
- top 명령어가 입력되면, 스택의 가장 위에 있는 값을 확인합니다. 스택이 비어 있지 않은 경우에만 이 명령어를 처리하며, 가장 위의 값을 반환합니다.
size 명령어 처리하기
- size 명령어가 입력되면, 현재 스택에 저장된 요소의 개수를 반환합니다. 이 개수를 반환하여 출력합니다.
empty 명령어 처리하기
- empty 명령어가 입력되면, 스택이 비어 있는지 여부를 확인합니다. 비어 있다면 1, 비어 있지 않다면 0을 반환합니다.
pop 명령어 처리하기
- pop 명령어가 입력되면, 스택의 가장 위에 있는 값을 꺼내어 반환합니다. 이 명령어는 스택이 비어 있지 않은 경우에만 처리됩니다.
예외 처리하기
- 스택이 비어 있을 때 top이나 pop 명령어가 호출되면, "-1"을 반환합니다. 이 경우, 명령어를 처리하기 전에 스택이 비어 있는지 확인합니다.
정답은 더보기 클릭
더보기
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
// BufferedReader와 BufferedWriter를 사용해 입출력 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 입력받을 명령어의 수
int n = Integer.parseInt(br.readLine());
// Stack 자료구조 선언
Stack<String> stack = new Stack<>();
// 명령어 개수만큼 반복
for (int i = 0; i < n; i++) {
// 명령어를 공백 기준으로 나눔
String[] commond = br.readLine().split(" ");
// "push" 명령어 처리
if (commond[0].equals("push")) {
stack.push(commond[1]); // 스택에 값 추가
}
// "top" 명령어 처리 (스택이 비어 있지 않을 때만)
else if (!stack.isEmpty() && commond[0].equals("top")) {
bw.write(stack.peek() + "\n"); // 스택의 최상위 값 확인
}
// "size" 명령어 처리
else if (commond[0].equals("size")) {
bw.write(stack.size() + "\n"); // 스택의 크기 출력
}
// "empty" 명령어 처리
else if (commond[0].equals("empty")) {
if (stack.isEmpty()) {
bw.write("1\n"); // 스택이 비어 있으면 1 출력
} else {
bw.write("0\n"); // 스택이 비어 있지 않으면 0 출력
}
}
// "pop" 명령어 처리 (스택이 비어 있지 않을 때만)
else if (!stack.isEmpty() && commond[0].equals("pop")) {
bw.write(stack.pop() + "\n"); // 스택의 최상위 값 제거 및 출력
}
// 그 외의 경우, "-1" 출력 (스택이 비어 있을 때 "top"이나 "pop" 명령어가 호출될 때)
else {
bw.write("-1\n");
}
}
// BufferedWriter의 남은 데이터를 출력
bw.flush();
bw.close();
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 나이순 정렬 (10814번) (0) | 2024.08.17 |
---|---|
[백준] 터렛 (1002번) (0) | 2024.08.16 |
[백준] 별 찍기 - 3 (2440번) (0) | 2024.08.15 |
[백준] 피보나치 수 5 (10870번) (0) | 2024.08.15 |
[백준] ACM 호텔 (10250번) (0) | 2024.08.15 |