백준 - 10845번 - 큐

이상훈·2023년 4월 16일
0
post-custom-banner

10845번

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
	static Queue<Integer> queue = new LinkedList<>();
	static int last = 0;

	public static void main(String[] args) throws IOException {

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int num = Integer.parseInt(bf.readLine());

		for (int i = 0; i<num; i++) {
			StringTokenizer st  = new StringTokenizer(bf.readLine());
			String text = st.nextToken();

			switch (text) {
				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);
	}

	private static void push(int N) {
		queue.add(N);
		last = N;
	}
	private static int pop() {
		if (queue.isEmpty()) {
			return -1;
		} else {
			return queue.remove();
		}
	}
	private static int size() {
		return queue.size();

	}
	private static int empty() {
		if (queue.isEmpty()) {
			return 1;
		} else {
			return 0;
		}
	}
	private static int front() {
		if (queue.isEmpty()) {
			return -1;
		} else {
			return queue.peek();
		}
	}
	private static int back() {
		if (queue.isEmpty()) {
			return -1;
		} else {
			return last;
		}
	}
}

풀이


큐의 기본적인 사용방법을 묻는 문제였다. 메서드로 분리해서 보니 가독성이 좋았다.

다만 문제에서 큐의 마지막 수를 출력하는 조건이 있다.

그런 명령어는 없어 다른 방법을 찾아야하는데 단순히 push할때 변수로 저장해 두면 쉽게 풀 수 있었다.

post-custom-banner

0개의 댓글