문제를 보면 Deque를 구현해야 하는데, 명령은 많지만 정직하게 구현만 해 주면 되기에 딱히 어려울 것은 없다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
public class Main {
public static ArrayDeque<Integer> deque = new ArrayDeque<>();
public static void process(String s) {
String[] split = s.split(" ");
if (split[0].equals("push_front")) {
deque.addFirst(Integer.parseInt(split[1]));
} else if (split[0].equals("push_back")) {
deque.addLast(Integer.parseInt(split[1]));
} else if (split[0].equals("pop_front")) {
if (deque.size() == 0) {
System.out.println(-1);
} else {
System.out.println(deque.pollFirst());
}
} else if (split[0].equals("pop_back")) {
if (deque.size() == 0) {
System.out.println(-1);
} else {
System.out.println(deque.pollLast());
}
} else if (split[0].equals("size")) {
System.out.println(deque.size());
} else if (split[0].equals("empty")) {
if (deque.size() == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
} else if (split[0].equals("front")) {
if (deque.size() == 0) {
System.out.println(-1);
} else {
System.out.println(deque.peekFirst());
}
} else if (split[0].equals("back")) {
if (deque.size() == 0) {
System.out.println(-1);
} else {
System.out.println(deque.peekLast());
}
}
}
public static void main(String[] args) throws IOException {
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를 선언해 놓은 뒤, 메인 메소드에서는 입력받은 내용을 process 메소드로 보내주고 프로세스에서 Deque를 구현해주면 되는데
분류만 해서 진행해주면 되는 수준이고 이미 deque에 구현해야 할 메소드가 모두 있기 때문에 코드 길게 짜느라 실수로 잘못 넣는 케이스를 조심해서 완성해주면 되겠다
Leave a Reply