ALGORITHM
백준 10845 큐 (Java)
공부하는_다온
2023. 4. 12. 22:32
1. 문제 링크
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
링크드리스트로 큐를 구현해서 문제에서 요구하는 명령을 switch case로 구현했다.
큐 문제지만 링크드리스트를 이용한 이유는 queue.peekFirst()와 queue.peekLast()를 이용하기 위해서이다.
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.util.LinkedList;
public class Main {
static StringBuilder sb;
public static void main(String [] args) throws IOException {
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(System.in));
sb = new StringBuilder();
LinkedList<Integer> queue = new LinkedList<Integer>();
int N = Integer.parseInt(br.readLine());
for(int i=0;i<N;i++) {
String[] split = br.readLine().split(" ");
switch(split[0]) {
case "push":
queue.offer(Integer.parseInt(split[1]));
break;
case "pop":
if(queue.isEmpty()) {
sb.append(-1).append("\n");
}
else {
sb.append(queue.poll()).append("\n");
}
break;
case "size":
sb.append(queue.size()).append("\n");
break;
case "empty":
if(queue.isEmpty()) {
sb.append(1).append("\n");
}
else {
sb.append(0).append("\n");
}
break;
case "front":
if(queue.isEmpty()) {
sb.append(-1).append("\n");
}
else {
sb.append(queue.peekFirst()).append("\n");
}
break;
case "back":
if(queue.isEmpty()) {
sb.append(-1).append("\n");
}
else {
sb.append(queue.peekLast()).append("\n");
}
break;
}
}
System.out.println(sb);
}
}