on
[백준 1966] 프린터 큐 (java)
[백준 1966] 프린터 큐 (java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class BOJ_프린터큐_1966 {
public static void main( String [] args) throws Exception{
BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));
int T = Integer. parseInt (br.readLine());
for ( int TC = 1 ; TC < = T; TC + + ) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer. parseInt (st.nextToken()); // 문서의 개수
int M = Integer. parseInt (st.nextToken()); // 몇 번째로 인쇄되었는지 궁금한 문서 - 현재 Queue의 몇번째 순서인지
Queue < int [] > queue = new LinkedList < int [] > ();
st = new StringTokenizer(br.readLine());
for ( int i = 0 ; i < N; i + + ) {
queue.offer( new int []{i,Integer. parseInt (st.nextToken())});
}
Queue < Integer > answer = new LinkedList < Integer > ();
int cnt = 0 ;
while ( ! queue.isEmpty()) {
int [] current = queue.poll();
boolean check = true ;
Iterator < int [] > it = queue.iterator();
while (it.hasNext()) {
int [] p = it.next();
if (current[ 1 ] < p[ 1 ]) {
check = false ; // 우선순위가 더 큰게 존재
break ;
}
}
if (check) { // check가 true로 그대일 경우 우선순위가 큰게 존재하지 않음
cnt + + ;
if (current[ 0 ] = = M) break ;
} else {
queue.offer(current);
}
}
System . out . println (cnt);
}
}
}
from http://yeonobly.tistory.com/71 by ccl(A) rewrite - 2021-12-28 05:28:22