hahn

단계별로 풀어보기(큐, 덱 - 프린터 큐) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(큐, 덱 - 프린터 큐)

hahn 2021. 9. 18. 14:22
728x90
반응형

1966번: 프린터 큐 (acmicpc.net)

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

http://boj.kr/8d678cb6b13d448e9a2372292c18bdf6

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;

class Main{
    
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
		
		int testCaseCount = sc.nextInt(),
			documentCount, document, input, condition, result;
		
		Queue<Integer> q;
		
		List<Integer> importance;
		
		for(int i = 0; i < testCaseCount; i++) {
            
			q = new LinkedList<>();
			importance = new ArrayList<Integer>();
			documentCount = sc.nextInt();
			document = sc.nextInt();
			condition = 0;
			result = 0;
			
			for(int j = 0; j < documentCount; j++) {
				
				input = sc.nextInt();
				
				q.add(input);
				importance.add(input);
				
			}
			
			importance.sort(Comparator.reverseOrder());
			
			while(q.size() != 0) {
				
				if(q.peek() == importance.get(0)) {
					
					q.poll();
					importance.remove(0);
					result++;
					if(document == 0) break;
					document--;
					
				}else {
					
					q.add(q.poll());
					if(document == 0) {
						
						document += q.size() - 1;
						
					}else {
						
						document--;
						
					}
					
				}
				
			}
			
			System.out.println(result);
			
		}
        
    }
    
}

 

큐에 들어오는 숫자 모두 넣어줌과 동시에

 

List에도 넣은 다음에

 

List를 내림차순 정렬하고

(중요도가 큰 게 먼저 나가야 하기 때문에)

 

큐와 List 비교했다.

 

큐가 poll되면 List의 0번째 인덱스 제거해주는 걸 반복했다.

 

그리고 얻고자하는 문서의 인덱스는 큐의 변화에 따라

 

바뀌게 하였음.

728x90
반응형