Data Structure & Algorithm/백준
백준 2164번 카드2 (Queue)
6cess
2022. 10. 25. 10:16
자료구조 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());
}
}