728x90
반응형
SMALL
📌 문제 정보
- 출처: 문제 링크
- 난이도: ⭐
- 문제 유형: Queue
- 사용 언어: Java
🔍 문제 설명
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
- push X: 정수 X를 큐에 넣는 연산이다.
- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 큐에 들어있는 정수의 개수를 출력한다.
- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
💡 풀이 노트
Queue의 기본 메서드
| 메서드 | 설명 | 반환값 / 예외 |
| `offer(E e)` | 요소를 큐의 끝에 추가 | 성공 시 `true`, 실패 시 `false` |
| `poll()` | 큐의 앞(front) 요소를 제거하고 반환 | 큐가 비어있으면 `null` 반환 |
| `remove()` | 큐의 앞 요소 제거 및 반환 | 큐가 비어있으면 예외 발생 (`NoSuchElementException`) |
| `peek()` | 큐의 앞 요소를 제거하지 않고 반환 | 큐가 비어있으면 `null` 반환 |
| `element()` | 큐의 앞 요소 반환 (peek과 동일) | 큐가 비어있으면 예외 발생 |
| `isEmpty()` | 큐가 비어있는지 확인 | `true` 또는 `false` |
| `size()` | 큐에 저장된 요소 개수 반환 | `int` |
🚀 코드 (Java)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
Queue<Integer> q = new LinkedList<>();
int last = -1;
for(int i = 0 ; i < N ; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
if(s.equals("push")){
int n = Integer.parseInt(st.nextToken());
q.offer(n);
last = n;
}
else if(s.equals("pop")){
if(!q.isEmpty()){
System.out.println(q.poll());
}
else{
System.out.println(-1);
}
}
else if(s.equals("size")){
System.out.println(q.size());
}
else if(s.equals("empty")){
System.out.println(q.isEmpty() ? 1: 0);
}
else if(s.equals("front")){
System.out.println(q.isEmpty() ? -1: q.peek());
}
else if(s.equals("back")){
System.out.println(q.isEmpty() ? -1: last);
}
}
}
}
🖥 실행 결과
입력
15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
출력
1
2
2
0
1
2
-1
0
1
-1
0
3
🔄 개선 가능성
📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest
728x90
반응형
LIST