이 문제는 큐를 응용하는 문제로 N개의 문서 중 중요도에 따라 높은 것 순으로 출력해야하는 문제이다. 문제를 풀기 전 어떤 형태의 알고리즘으로 풀어야 할지 분석하였다.
package data_structure;
import java.util.*;
public class print_queue {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int n = in.nextInt();
for(int i = 0; i<n; i++) {
int N = in.nextInt(); // 총 문서 개수
int M = in.nextInt(); // 원하는 문서 위치 값
LinkedList<int[]> que = new LinkedList<>();
int count = 0;
for(int j = 0; j<N; j++) {
que.offer(new int[] {j, in.nextInt()} );
}
while(!que.isEmpty()) {
int[] first = que.poll();
boolean isMax = true;
for(int z = 0; z<que.size(); z++) {
if(first[1] < que.get(z)[1]) {
que.offer(first);
for(int j = 0; j<z; j++) {
que.offer(que.poll());
}
isMax = false;
break;
}
}
if(isMax == false) {
continue;
}
count++;
if(first[0] == M)
break;
}
sb.append(count).append("\n");
}
System.out.print(sb);
}
}
- 큐의 응용문제라 쉽게 풀 수 있을거라 생각했지만 우선 어떻게 알고리즘을 설계하여할지 감이 도통 잡히지 않아 구글링을 통해 다양한 방법을 배웠고, 그 중 나와 가장 비슷하게 구현을 시도했던 코드를 참조하여 문제를 풀었다. 이번 응용 문제를 통해 큐에 대해 완벽히 숙지할 수 있는 시간이었던 것 같다.