알고리즘 연습

[10845] 큐 - Java

밀깜 2022. 2. 10. 16:07

 

1. 문제

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

 

10845번: 큐

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

www.acmicpc.net

 

2. 풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

	// Make queue using ArrayList
	private int size;
	private ArrayList<Integer> queue;

	// Constructor
	public Main() {
		this.size = 0;
		this.queue = new ArrayList<Integer>();
	}

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

		// Import classes
		Main que = new Main();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;

		// Read cases
		int cases = Integer.parseInt(br.readLine());
		
		int result = 0;
		
		for(int i = 0; i < cases; i++) {
			
			st = new StringTokenizer(br.readLine(), " ");
			
			String command = st.nextToken();
			
			if(command.equals("push")) {
				que.push(Integer.parseInt(st.nextToken()));
				continue;
			}
			else if(command.equals("pop")) {
				result = que.pop();
			}
			else if(command.equals("size")) {
				result = que.size();
			}
			else if(command.equals("empty")) {
				result = que.empty();
			}
			else if(command.equals("front")) {
				result = que.front();
			}
			else if(command.equals("back")) {
				result = que.back();
			}
			sb.append(result).append('\n');
		}

		// Print result
		System.out.println(sb);

	}
	// push method
	public void push(int number) {
		queue.add(number);
		size++;
	}
	
	// pop method
	public int pop() {
		if(size()  == 0) {
			return -1;
		}
		else {
			int result = queue.get(0);
			queue.remove(0);
			size--;
			return result;
		}
	}
	
	// size method
	public int size() {
		return size;
	}
	
	// empty method
	public int empty() {
		if(size == 0) {
			return 1;
		}
		else {
			return 0;
		}
	}
	
	// front method
	public int front() {
		if(size() == 0) {
			return -1;
		}
		else {
			return queue.get(0);
		}
	}

	// back method
	public int back() {
		if(size() == 0) {
			return -1;
		}
		else {
			return queue.get(size - 1);
		}
	}
}

 

3. 배운점

 

 

4. 개선할 점