백준
백준 큐 - 1966번 : 프린터 큐
맴썰
2022. 3. 2. 16:03
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
import java.util.*;
import java.io.*;
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 n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
int idx = Integer.parseInt(st.nextToken());
ArrayList<Integer> print = new ArrayList<>();
st = new StringTokenizer(br.readLine());
int[] arr = new int[num];
for(int j=0; j<num; j++) {
int temp = Integer.parseInt(st.nextToken());
print.add(temp);
arr[j] = temp;
}
int max = getmax(arr);
int cnt = 1;
int p=1;
while(true) {
int temp = print.get(0);
print.remove(0);
if(temp==max) {
if(idx==0){
bw.write(p+"\n");
break;
}
else idx-=1;
arr[getmidx(arr,max)] = -1;
max = getmax(arr);
p++;
num--;
}
else {
print.add(temp);
if(idx==0) {
idx = num-1;
}
else idx-=1;
}
}
}
bw.close();
}
static int getmax(int[] arr) {
int max = Integer.MIN_VALUE;
for(int i=0; i<arr.length; i++) {
if(arr[i]>max) {
max = arr[i];
}
}
return max;
}
static int getmidx(int[] arr,int max) {
for(int i=0; i<arr.length; i++) {
if(arr[i]==max) {
return i;
}
}
return 0;
}
}