본문 바로가기
Data Structure & Algorithm/백준

백준 2164번 카드2 (Queue)

by 6cess 2022. 10. 25.

자료구조 Queue 를 사용하는 문제다. 문제  풀이에서 큐는 처음 사용해보므로 한번 직접 구현해보았다.

class ArrayQueue {
	
	int max = 1000000;
	int front; //머리
	int rear; //꼬리
	int[] queue;
	
	public ArrayQueue() {
		front = rear = 0;
		queue = new int[max];
	}
	
	public boolean queueIsEmpty() {
		return front == rear;
	}
	
	public boolean queueIsFull() {
		if(rear == max) {
			return true;
		}else {
			return false;
		}
	}
	
	public int size() {
		return rear-front;
	}
	
	public void push(int value) {
		if(queueIsFull()) {
			System.out.println("큐가 다 찼습니다.");
			return;
		}
		queue[rear++] = value;
	}
	
	public int pop() {
		if(queueIsEmpty()) {
			System.out.println("큐가 비었습니다.");
			return -1;
		}
		int popValue = queue[front++];
		return popValue;
	}
	
	public int peek() {
		if(queueIsEmpty()) {
			System.out.println("큐가 비었습니다.");
			return -1;
		} 
		int popValue = queue[front];
		return popValue;
	}
}

 

자바 Array로 만든 Queue 클래스를 활용한 문제풀이.

public class No2164 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		ArrayQueue queue = new ArrayQueue();
		
		for (int i = 1; i <= N; i++) {	
			queue.push(i);
		}
		
		while(true) {
			if(queue.size()==1) break;
			queue.pop();
			queue.push(queue.pop());
		}
	
		System.out.println(queue.pop());
	}

}