알고리즘 분류
- 자료 구조
- 큐
스택 문제랑 동일한데,
이번엔 큐다.
Queue<Integer> queue = new LinkedList<>();
로 큐를 생성한 후 조건에 맞게 처리해주면 된다.
- 값 추가
스택의 push가
큐에서는 offer() 또는 add()
- 값 삭제
스택의 pop이
큐에서는 poll() 또는 remove()
예외(Exception)를 터뜨리고 싶다면 add, remove를 사용하고
false나 Null로 받고 싶다면 offer, poll을 사용하면 된다.
맨 앞의 값은 스택과 유사하게 peek()으로 알 수 있고
헷갈렸던 건 맨 뒤의 값이었는데,
push로 추가되는 값을 num에 저장해두면 됐다.
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());
Queue<Integer> queue = new LinkedList<>();
int num = 0;
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String com = st.nextToken();
if (com.equals("push")) {
num = Integer.parseInt(st.nextToken()); // 맨 뒤의 값을 저장해둔다
queue.offer(num);
}
else if (com.equals("pop")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(queue.poll());
}
}
else if (com.equals("size")) {
System.out.println(queue.size());
}
else if (com.equals("empty")) {
if (queue.size() == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
}
else if (com.equals("front")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(queue.peek()); // 맨 앞의 값 출력
}
}
else if (com.equals("back")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(num); // 맨 뒤의 값 출력
}
}
}
}
}
'Languages > Java' 카테고리의 다른 글
[BOJ 길라잡이/Java] 5일차 #1406 에디터 (0) | 2025.03.11 |
---|---|
[BOJ 길라잡이/Java] 5일차 #10866 덱 (0) | 2025.03.11 |
[BOJ 길라잡이/Java] 4일차 #10828 스택 (0) | 2025.03.11 |
[BOJ 길라잡이/Java] 3일차 #10815 숫자 카드 (0) | 2025.03.08 |
[BOJ 길라잡이/Java] 2일차 #10989 수 정렬하기 3 (0) | 2025.03.06 |