반응형
https://www.acmicpc.net/problem/28278
문제
문제 풀이
문제 해결 방법:
1. 스택 자료구조 활용
- 주어진 명령어가 스택과 밀접한 연관이 있으므로 Stack<Integer> 클래스를 사용하면 쉽게 구현할 수 있다.
2. 조건문을 활용한 명령어 처리
- 명령어를 하나씩 읽고 해당하는 동작을 수행한다.
- 명령어 1 X인 경우 stack.push(X)를 수행한다.
- 명령어 2는 stack.pop()을 수행하며, 비어 있다면 -1을 출력한다.
- 명령어 3은 stack.size()를 출력한다.
- 명령어 4는 stack.isEmpty()를 이용하여 출력값을 결정한다.
- 명령어 5는 stack.peek()을 출력하며, 비어 있으면 -1을 출력한다.
코드
import java.io.*;
import java.util.*;
public class Main {
private static Stack<Integer> stack;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
stack = new Stack<>();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int instruction = Integer.parseInt(st.nextToken());
if (instruction == 1) {
int x = Integer.parseInt(st.nextToken());
stack.push(x);
}
if (instruction == 2) {
if (stack.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(stack.pop() + "\n");
}
}
if (instruction == 3) {
sb.append(stack.size() + "\n");
}
if (instruction == 4) {
if (stack.isEmpty()) {
sb.append("1\n");
} else {
sb.append("0\n");
}
}
if (instruction == 5) {
if (stack.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(stack.peek() + "\n");
}
}
}
System.out.print(sb);
}
}
코드 설명
입력 처리: O(N) (BufferedReader 사용)
명령 처리:
- push(X): O(1)
- pop(): O(1)
- size(): O(1)
- isEmpty(): O(1)
- peek(): O(1)
출력 처리: O(N) (StringBuilder 사용)
전체 복잡도: O(N)
반응형
'백준' 카테고리의 다른 글
[백준] 1541번 : 잃어버린 괄호 – JAVA [자바] (0) | 2025.02.25 |
---|---|
[백준] 1374번 : 강의실 – JAVA [자바] (0) | 2025.02.21 |
[백준] 11000번 : 강의실 배정 – JAVA [자바] (0) | 2025.02.21 |
[백준] 13904번 : 과제 – JAVA [자바] (0) | 2025.02.21 |
[백준] 9506번 : 약수들의 합 – JAVA [자바] (3) | 2023.12.01 |
댓글