Algorithm/백준 알고리즘

백준_10845 큐(자바) / 자료구조

미스터로즈 2021. 4. 2. 08:35

시간 & 메모리 제한

문제

입력 & 출력

자료구조를 구현하는 문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Back_10845 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int TestCase = Integer.parseInt(br.readLine());
		Deque<Integer> qu = new ArrayDeque<Integer>();
		StringBuilder output = new StringBuilder();
		
		for(int tc = 0 ; tc < TestCase; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String command =st.nextToken();
			int input =0;

			if(command.equals("push")) {
				input = Integer.parseInt(st.nextToken());
			}
			switch (command) {
			case "push":
				qu.offer(input);
				break;
			case "pop":
				if(qu.size()==0) {
					output.append("-1\n");
					break;
				}
				output.append(qu.poll()+"\n");
				break;
			case "size":
				output.append(qu.size()+"\n");
				break;
			case "empty":
				if(qu.size()==0) {
					output.append("1\n");
				}else {
					output.append("0\n");
				}
				break;
			case "front":
				if(qu.size()==0) {
					output.append("-1\n");
					break;
				}
				output.append(qu.getFirst()+"\n");
				break;
			case "back":
				if(qu.size()==0) {
					output.append("-1\n");
					break;
				}
				output.append(qu.getLast()+"\n");
				break;
			}
			
		}
		System.out.println(output);
	}
}

- 이 문제는 Queue에 대한 메소드를 구현해보는 문제입니다.

 

- push , pop, size , empty, front , back 의 기능을 알고 있으면 좀 더 쉽게 풀 수 있을것입니다.

 

- 문제 해결은 switch문을 이용해서 문제를 해결 했습니다.

 

- 저는 큐도 좋지만 데크를 이용이 좀 편해서 데크를 이용했습니다.

 

- 큐와 데크의 차이는 큐는 선입선출(FIFO) 구조 이지만 데크는 앞 뒤로 다 넣고 뺄 수 있습니다.