반응형

 

[광고 누르면 오늘의 행운 상승!!]

 

https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net

중요도 별로 역정렬한 후에 

중요도 순으로 출력하면서 자신이면 순번을 출력하였다.

import java.io.*;
import java.util.*;

class Document{
	int importance;
	boolean isMe;
	public Document(int importance, boolean isMe) {
		this.importance = importance;
		this.isMe = isMe;
	}
}
public class 프린터큐 {
	public static Queue<Document> q;
	public static Queue<Document> ansq;
	public static void main(String[] args) throws Exception {
		System.setIn(new FileInputStream("test.txt"));
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		
		for (int tc = 0; tc < T; tc++) {
			
			q = new LinkedList<>();
			ansq = new LinkedList<>();
			
			int N = sc.nextInt();
			int M = sc.nextInt();
			
			Integer arr[] = new Integer[N];

			for (int i = 0; i < N; i++) {
				int num = sc.nextInt();
				arr[i] = num;
				if(i == M) {
					q.add(new Document(num,  true));
					continue;
				}
				q.add(new Document(num,  false));
			}
			
			Arrays.sort(arr, Collections.reverseOrder());

			int cnt= 0;
			while(!q.isEmpty()) {
				Document docu = q.poll();
				
				if(docu.importance < arr[cnt]) {
					q.add(docu);
					continue;
				}else {
					ansq.add(docu);
					cnt++;
				}
			}
			cnt = 1;
			while(!ansq.isEmpty()) {
				Document docu = ansq.poll();
				if(docu.isMe) System.out.println(cnt);
				cnt++;
			}
		}
	}
}
반응형

+ Recent posts