1. 문제 링크
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);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 2174 로봇 시뮬레이션 (Java) (0) | 2023.04.13 |
---|---|
백준 1978 소수 찾기 (Java) (0) | 2023.04.13 |
백준 3028 창영마을 (Java) (0) | 2023.04.12 |
백준 9328 열쇠 (Java) (0) | 2023.04.11 |
백준 1743 음식물 피하기 (Java) (0) | 2023.04.11 |