유형 | 난이도 | 소요 시간 | 해결 유무 |
---|---|---|---|
• 자료 구조 | |||
• 큐 | Silver 4 |
30분 | ✅ |
Queue
자료 구조 라이브러리 사용<aside> 💡 java.util.Queue
add()
또는 offer()
: 큐에 값 추가
add()
: 큐에 값 추가 성공 시 true
반환, 여유 공간이 부족하여 실패 시 IllegalStateException
예외 발생offer()
: 큐에 값 추가 성공 시 true
, 실패 시 false
반환remove()
또는 poll()
: 큐의 가장 앞에 있는 값을 제거함과 동시에 반환
remove()
: 큐가 비어있으면 NoSuchElementException
예외 발생poll()
: 큐가 비어있으면 null
반환size()
: 큐의 크기 반환isEmpty()
: 큐가 비어있으면 true
, 비어있지 않으면 false
반환element()
또는 peek()
: 큐의 가장 앞에 있는 값을 반환하며, 스택에는 변화 없음
element()
: 큐가 비어있으면 NoSuchElementException
예외 발생peek()
: 큐가 비어있으면 null
반환
</aside>// <https://www.acmicpc.net/problem/10845>
// Silver 4 큐
import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
public class BOJ_10845 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
Queue<Integer> queue = new LinkedList<Integer>();
int num = Integer.parseInt(br.readLine());
int last = -1;
for (int i = 0; i < num; i++) {
String[] cmd = br.readLine().split(" ");
switch (cmd[0]) {
case "push":
last = Integer.parseInt(cmd[1]);
queue.offer(last);
break;
case "pop":
if (queue.isEmpty()) {
sb.append(-1);
} else {
sb.append(queue.poll());
}
sb.append("\\n");
break;
case "size":
sb.append(queue.size());
sb.append("\\n");
break;
case "empty":
sb.append(queue.isEmpty()? 1 : 0);
sb.append("\\n");
break;
case "front":
if (queue.isEmpty()) {
sb.append(-1);
} else {
sb.append(queue.peek());
}
sb.append("\\n");
break;
case "back":
if (queue.isEmpty()) {
sb.append(-1);
} else {
sb.append(last);
}
sb.append("\\n");
break;
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
peek()
을 사용하면 되지만, back에 위치한 값을 출력할 때는 기본 제공 메소드가 없어서 고민 시간이 소요되었음