자료구조 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());
}
}
'Data Structure & Algorithm > 백준' 카테고리의 다른 글
No9012 괄호 (Stack) (0) | 2022.10.25 |
---|---|
No2798 블랙잭(브루트포스 알고리즘) (0) | 2022.10.25 |
이진 검색 (10816번, 1920번) (0) | 2022.09.29 |
solved.ac 활용하기 (0) | 2022.09.27 |
1152번 : 단어의 개수 (String의 split 메소드 주의사항) (0) | 2022.09.19 |