[백준/자바] 10845번: 큐

수박강아지·2025년 9월 16일

BAEKJOON

목록 보기
136/174

문제

https://www.acmicpc.net/problem/10845

풀이

  • 큐 구현
  • 총 6가지 명령
    1. push X: 정수 X를 큐에 넣는 연산이다.
    2. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    3. size: 큐에 들어있는 정수의 개수를 출력한다.
    4. empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
    5. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    6. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

문제에 주어진 명령어만 제대로 구현해주면 됩니다.

push나 pop, back을 할 땐 start, size 크기를 잘 고려해서 풀어야 합니다.

코드

import java.util.*;
import java.io.*;

public class Main {
	static StringBuilder sb = new StringBuilder();
	static int n;
	static int[] queue;
	
	static int size = 0;
	static int start = 0;
	
	private static void push(int x) {
		queue[size++ + start] = x;
	}
	
	private static int pop() {
		if (size == 0) return -1;
		size--;
		return queue[start++];
	}
	
	private static int empty() {
		return size == 0 ? 1 : 0;
	}
	
	private static int front() {
		return (size == 0) ? -1 : queue[start];
	}
	
	private static int back() {
		return (size == 0) ? -1 : queue[start + size-1];
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		queue = new int[n];
		
		for (int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String cmd = st.nextToken();
			
			switch (cmd) {
			case "push":
				push(Integer.parseInt(st.nextToken()));
				break;
			case "pop":
				sb.append(pop()).append('\n');
				break;
			case "size":
				sb.append(size).append('\n');
				break;
			case "empty":
				sb.append(empty()).append('\n');
				break;
			case "front":
				sb.append(front()).append('\n');
				break;
			case "back":
				sb.append(back()).append('\n');
				break;
			}
			
		}
		
		System.out.println(sb.toString());
	}
}

0개의 댓글