단계별 문제 풀어보기 큐 문제를 풀어봤다.
https://www.acmicpc.net/problem/1966
값을 리스트와 변수에 넣고 리스트에 있는 요소를 하나씩 비교하여 타겟 변수와 일치하면 count를 높이는 방식으로 푼다는 건 생각해냈다.
중요도 비교 알고리즘 구현에서 막혀서 다른 사람 풀이를 참고했다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
int size = Integer.parseInt(st.nextToken());
int target = Integer.parseInt(st.nextToken());
LinkedList<int[]> q = new LinkedList<int[]>();
StringTokenizer s = new StringTokenizer(br.readLine());
for (int i = 0; i < size; i++) {
int[] arr = { i, Integer.parseInt(s.nextToken()) };
q.add(arr);
}
int count = 0;
while (!q.isEmpty()) {
boolean isMax = true;
int[] front = q.poll();
for (int i = 0; i < q.size(); i++) {
if (front[1] < q.get(i)[1]) {
q.offer(front);
for (int j = 0; j < i; j++) {
q.offer(q.poll());
}
isMax = false;
break;
}
}
if (isMax == false) {
continue;
}
count++;
if (front[0] == target) {
break;
}
}
bw.write(count + "\n");
}
bw.flush();
}
}