본문 바로가기
코딩테스트/프로그래머스 2단계

프로그래머스 2단계 - 프린터(스택/큐)

by SICDev 2021. 9. 9.
반응형

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        
        Queue<Integer> que = new LinkedList<>();

        //큐에 값 넣기
        for(int i=0; i<priorities.length; i++){
            que.add(priorities[i]);
        }
        
        //오름차순으로 정렬
        Arrays.sort(priorities);
        int maxLength = priorities.length-1;
        
        int index = 0;
        while(!que.isEmpty()){
            int top = que.poll();
            //큐에서 뽑은 값이 우선순위가 가장 큰 값이라면
            if(top == priorities[maxLength-index]){
                //그 다음 우선순위가 높은 값을 비교하기위해 index값을 ++
                index++;
                //내가 원하는 위치는 한칸 앞으로 이동
                location--;
                //0 보다 작다는건 제일 앞에 있었다는 뜻.
                if(location < 0){
                    return index;
                }
            }else{
                //맨뒤로 넣는다.
                que.add(top);
                //내가 원하는 위치는 한칸 앞으로 이동
                location--;
                //제일 앞에 있었으면 다시 맨뒤로 이동
                if(location < 0){
                    location = que.size()-1;
                }
            }
        }

        return index;
    }
}
반응형