티스토리 뷰

728x90

문제

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

 

10845번: 큐

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

www.acmicpc.net

 

풀이 및 소스코드

 

자바에도 queue API가 잘 되어있어서 그것을 사용했다.

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


class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		Queue<Integer> q = new LinkedList<Integer>();
		int b=0;
		
		int n = Integer.parseInt(br.readLine());
		for(int i=0;i<n;i++) {
			String tmp = br.readLine();
			if(tmp.contains("push")) {
				st = new StringTokenizer(tmp);
				st.nextToken();
				int num = Integer.parseInt(st.nextToken());
				q.add(num);
				b = num;
			}
			else if(tmp.equals("pop")) {
				if(q.isEmpty()) {
					sb.append("-1\n");
				}else {
					sb.append(q.remove()+"\n");
				}
			}else if(tmp.equals("size")) {
				sb.append(q.size()+"\n");
			}else if(tmp.equals("empty")) {
				if(q.isEmpty()) sb.append("1\n");
				else sb.append("0\n");
			}else if(tmp.equals("front")) {
				if(q.isEmpty()) sb.append("-1\n");
				else sb.append(q.peek()+"\n");
			}else {
				if(q.isEmpty()) sb.append("-1\n");
				else sb.append(b+"\n");
			}
		}
		System.out.println(sb);
	}
}
반응형