본문 바로가기

ALGORITHM

백준 10845 큐 (Java)

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

 

'ALGORITHM' 카테고리의 다른 글

백준 2174 로봇 시뮬레이션 (Java)  (0) 2023.04.13
백준 1978 소수 찾기 (Java)  (0) 2023.04.13
백준 3028 창영마을 (Java)  (0) 2023.04.12
백준 9328 열쇠 (Java)  (0) 2023.04.11
백준 1743 음식물 피하기 (Java)  (0) 2023.04.11