본문 바로가기
알고리즘

[알고리즘] 백준 10845번 큐 (JAVA)

by worldpeace21 2020. 3. 16.

1. 배열로 큐를 구현하여 문제풀이

import java.util.Scanner;

class Queue{
	private int[] queue;
	private int frontIndex = 0;
	private int backIndex = -1;
	
	Queue(){
		
	}
	
	Queue(int number){
		queue = new int[number];
	}
	
	public void push(int x) {
		queue[++backIndex] = x;
	}
	
	public int size() {
		return backIndex - frontIndex + 1;
	}
	
	public boolean isEmpty() {
		if (size()==0)
			return true;
		else
			return false;
	}
	
	public int  pop() {
		if (isEmpty())
			return -1;
		else
			return queue[frontIndex++];
	}
	
	public int front() {
		if (isEmpty())
			return -1;
		else
			return queue[frontIndex];
	}
	
	public int back() {
		if (isEmpty())
			return -1;
		else
			return queue[backIndex];
	}
	
}
public class Main {
	public static void main(String args[]) {
		Scanner scanner = new Scanner(System.in);
		int number = scanner.nextInt();
		Queue queue = new Queue(number);
		for(int i = 0; i <number; i++) {
			String command = scanner.next();
			switch(command) {
				case "push":
					int x = scanner.nextInt();
					queue.push(x);
					break;
				case "pop":
					System.out.println(queue.pop());
					break;
				case "empty":
					if (queue.isEmpty())
						System.out.println(1);
					else
						System.out.println(0);
					break;
				case "front":
					System.out.println(queue.front());
					break;
				case "back":
					System.out.println(queue.back());
					break;
				case "size":
					System.out.println(queue.size());
					break;
			}
		}
	}
}

 

2. 큐 라이브러리를 이용해서 문제풀이

import java.util.Scanner;
import java.util.LinkedList;

public class Main {
	public static void main(String args[]) {
		Scanner scanner = new Scanner(System.in);
		int number = scanner.nextInt();
		LinkedList<Integer> queue = new LinkedList<>();
		for(int i = 0; i <number; i++) {
			String command = scanner.next();
			switch(command) {
				case "push":
					int x = scanner.nextInt();
					queue.add(x);
					break;
				case "pop":
					if (queue.isEmpty())
						System.out.println(-1);
					else
						System.out.println(queue.removeFirst());
					break;
				case "empty":
					if (queue.isEmpty())
						System.out.println(1);
					else
						System.out.println(0);
					break;
				case "front":
					if (queue.isEmpty())
						System.out.println(-1);
					else
						System.out.println(queue.getFirst());
					break;
				case "back":
					if (queue.isEmpty())
						System.out.println(-1);
					else
						System.out.println(queue.getLast());
					break;
				case "size":
					System.out.println(queue.size());
					break;
			}
		}
	}
}

'알고리즘' 카테고리의 다른 글

[알고리즘] 백준 10828번 스택 (JAVA)  (0) 2020.03.16