문제 내용은 큐의 여러 기능을 구현해야 하는데, 대부분의 기능은 구현하는데 어려울 것이 없지만, 문제는 Queue는 들어온 순서로만 뺄 수 있을텐데, 마지막 명령어가 가장 뒤에 있는 값을 출력하라는 건데 이걸 생각하고 진행해야 문제를 어려움 없이 풀 수 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
public class Main {
public static ArrayDeque<Integer> queue = new ArrayDeque<>();
public static void process(String s) {
String[] split = s.split(" ");
if (split[0].equals("push")) {
queue.add(Integer.parseInt(split[1]));
} else if (split[0].equals("pop")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(queue.poll());
}
} else if (split[0].equals("size")) {
System.out.println(queue.size());
} else if (split[0].equals("empty")) {
if (queue.size() == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
} else if (split[0].equals("front")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(queue.peek());
}
} else if (split[0].equals("back")) {
if (queue.size() == 0) {
System.out.println(-1);
} else {
System.out.println(queue.peekLast());
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 0; i < count; i++) {
process(br.readLine());
}
}
}
핵심은 앞뒤로 뺄 수 있는 큐인 ArrayDeque를 사용해야 한다는 건데, 이후로는 입력 값 받아서 Split으로 쪼갠 후 queue의 각 기능을 사용해서 처리해주면 된다
여기서 queue는 클래스 쪽에 선언해둬야 편하게 처리할 수 있다
Leave a Reply