ALGORITHM

백준 10845 큐 (Java)

공부하는_다온 2023. 4. 12. 22:32

1. 문제 링크

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

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);
	}
}