-
10866번 - 덱알고리즘/백준 2023. 6. 6. 13:17
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayDeque<Integer> deque = new ArrayDeque<>(); StringTokenizer st; StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); String command; for(int i=0;i<N;i++) { st = new StringTokenizer(br.readLine()); command = st.nextToken(); if(command.equals("push_front")) { deque.push(Integer.parseInt(st.nextToken())); } else if(command.equals("push_back")) { deque.offer(Integer.parseInt(st.nextToken())); } else if(command.equals("front")) { sb.append(deque.isEmpty() ? -1+"\n" : deque.peek()+"\n"); } else if(command.equals("back")) { sb.append(deque.isEmpty() ? -1+"\n" : deque.peekLast()+"\n"); } else if (command.equals("size")) { sb.append(deque.size()+"\n"); } else if (command.equals("empty")) { sb.append(deque.isEmpty() ? 1+"\n" : 0+"\n"); } else if (command.equals("pop_front")){ sb.append(deque.isEmpty() ? -1+"\n" : deque.poll()+"\n"); } else { sb.append(deque.isEmpty() ? -1+"\n" : deque.pollLast()+"\n"); } } System.out.println(sb); br.close(); } }
이번에도 역시 Java의 ArrayDeque를 이용해 해결했습니다. 한 가지 주의할 점은 Deque에서는 Stack과 Queue의 모든 메서드들을 활용할 수 있는데 push와 offer는 위치가 다르지만 pop과 poll은 같기 때문에 pop대신 pollLast를 이용해야 한다는 점입니다.
'알고리즘 > 백준' 카테고리의 다른 글
11650번 - 좌표 정렬하기 (0) 2023.06.06 1676번 - 팩토리얼 0의 개수 (2) 2023.06.06 10845번 - 큐 (2) 2023.06.06 10828번 - 스택 (2) 2023.06.06 10816번 - 숫자 카드 2 (1) 2023.06.06