알고리즘 분류
- 구현
- 자료 구조
- 스택
https://www.acmicpc.net/problem/10828
문제 제목이 그렇듯,
스택 문제다.
문제가 복잡하진 않고 주어진 조건대로
스택에서 push, pop, size, peek 등을 활용하면 된다.
작성한 코드는 다음과 같다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String com = st.nextToken();
if (com.equals("push")) {
int pushNum = Integer.parseInt(st.nextToken());
stack.push(pushNum);
}
else if (com.equals("pop")) {
if (stack.size() == 0) {
sb.append(-1);
} else {
sb.append(stack.pop());
}
sb.append("\n");
}
else if (com.equals("size")) {
sb.append(stack.size());
sb.append("\n");
}
else if (com.equals("empty")) {
if (stack.size() == 0) {
sb.append(1);
} else {
sb.append(0);
}
sb.append("\n");
}
else if (com.equals("top")) {
if (stack.size() == 0) {
sb.append(-1);
} else {
sb.append(stack.peek());
}
sb.append("\n");
}
}
System.out.println(sb.toString());
}
}
pop 하지 않고 스택의 가장 위에 있는 정수를 출력할 때는
peek() 메서드를 사용한다는 것만 잘 기억해두면 될 것 같다.
StringBuilder를 사용하긴 했는데
그대로 print해도 복잡도에 큰 차이가 없었다.
'Languages > Java' 카테고리의 다른 글
[BOJ 길라잡이/Java] 5일차 #10866 덱 (0) | 2025.03.11 |
---|---|
[BOJ 길라잡이/Java] 4일차 #10845 큐 (0) | 2025.03.11 |
[BOJ 길라잡이/Java] 3일차 #10815 숫자 카드 (0) | 2025.03.08 |
[BOJ 길라잡이/Java] 2일차 #10989 수 정렬하기 3 (0) | 2025.03.06 |
[BOJ 길라잡이/Java] 2일차 #2751 수 정렬하기 2 (0) | 2025.03.06 |