728x90
코드 힌트
- 입력 및 출력 처리:
- BufferedReader를 사용하여 입력을 효율적으로 받고, BufferedWriter를 사용하여 출력 속도를 높입니다.
- 스택 연산 처리:
- Push (1): 입력된 정수를 스택에 추가합니다.
- Pop (2): 스택에서 가장 위의 정수를 제거하고 출력합니다. 스택이 비어있으면 -1을 출력합니다.
- Size (3): 스택의 현재 크기를 출력합니다.
- IsEmpty (4): 스택이 비어있으면 1, 그렇지 않으면 0을 출력합니다.
- Peek (5): 스택의 가장 상단에 있는 정수를 출력합니다. 스택이 비어있으면 -1을 출력합니다.
- 입력 분리 및 처리:
- String.split(" ") 메서드를 사용하여 공백을 기준으로 입력 문자열을 나누고, 명령어와 관련 값을 처리합니다.
정답은 더보기 클릭
더보기
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
// 입력을 효율적으로 받기 위해 BufferedReader 사용
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 출력을 효율적으로 하기 위해 BufferedWriter 사용
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// Stack 객체를 생성합니다.
Stack<Integer> stack = new Stack<>();
// 첫 번째 줄에서 스택 연산의 개수를 입력받습니다.
int n = Integer.parseInt(br.readLine());
// 각 연산을 처리하기 위한 반복문
for (int i = 0; i < n; i++) {
// 입력된 문자열을 공백을 기준으로 나누어 배열로 변환합니다.
String[] input = br.readLine().split(" ");
// 첫 번째 값으로 어떤 연산을 수행할지 결정합니다.
switch (Integer.parseInt(input[0])) {
// 스택에 정수를 추가합니다.
case 1:
stack.push(Integer.parseInt(input[1]));
break;
// 스택에서 정수를 제거하고 출력합니다. 스택이 비어있으면 -1을 출력합니다.
case 2:
if (stack.isEmpty()) {
bw.write("-1\n");
} else {
bw.write(stack.pop() + "\n");
}
break;
// 스택의 현재 크기를 출력합니다.
case 3:
bw.write(stack.size() + "\n");
break;
// 스택이 비어있는지 여부를 출력합니다. 비어있으면 1, 아니면 0을 출력합니다.
case 4:
if (stack.isEmpty()) {
bw.write("1\n");
} else {
bw.write("0\n");
}
break;
// 스택의 가장 상단에 있는 정수를 출력합니다. 스택이 비어있으면 -1을 출력합니다.
case 5:
if (stack.isEmpty()) {
bw.write("-1\n");
} else {
bw.write(stack.peek() + "\n");
}
break;
}
}
// 출력 버퍼를 비우고 닫습니다.
bw.flush();
bw.close();
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 괄호 9012번 (0) | 2024.08.08 |
---|---|
[백준] 제로 10773번 (0) | 2024.08.08 |
[백준] 그림 1926번 (0) | 2024.07.31 |
[백준] 수 찾기 1920번 (0) | 2024.07.30 |
[백준] 최대공약수 1850번 (0) | 2024.07.28 |