-
[백준 10845] - [큐] - 큐 (JAVA)알고리즘/큐(Queue) 2018. 12. 2. 14:02
문제 링크 : https://www.acmicpc.net/problem/10845
이 문제는 큐를 제대로 이해하고 있는지 파악하는 문제로 보인다.
근데 내가 기억하는 큐는 선입선출이고 탐색은 front 할 수 있다고 알고 있었는데 이 문제는 back도 탐색을 하라고 한다.
그래서 push로 큐에 삽입할때 back의 값을 변경하고 POP으로 큐에서 추출할때 추출한 이후에 큐가 비어 있으면 큐의 크기를 -1로 변경했다.
큐는 선입선출이니 딱 이 두 상태에서만 back의 값을 변경해주면 문제는 없다.
소스
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main {public static Queue<Integer> queue;public static void main(String[] args) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = null;int count = Integer.parseInt(br.readLine());queue = new LinkedList<Integer>();StringBuilder sb = new StringBuilder();int back = -1;while(count-- > 0) {st = new StringTokenizer(br.readLine());String order = st.nextToken();if("push".equals(order)) {back = Integer.parseInt(st.nextToken());queue.offer(back);}else if("size".equalsIgnoreCase(order)) {sb.append(queue.size() + "\n");}else if("empty".equals(order)) {if(queue.size() == 0) sb.append("1 \n");else sb.append("0 \n");}else if("pop".equals(order)) {if(queue.size() == 0) sb.append("-1 \n");else sb.append(queue.poll() + "\n");if(queue.size() == 0) back = -1;}else if("front".equals(order)) {if(queue.size() == 0) sb.append("-1 \n");else sb.append(queue.peek() + "\n");}else if("back".equals(order)) {sb.append(back + "\n");}}System.out.println(sb.toString());}}cs 댓글