본문 바로가기
정리/알고리즘

스택/큐 - 프린터

by Hudini30 2022. 2. 3.

프로그래머스 (스택/큐) 프린터

해당 문제는 문제 그대로 큐 2개를 사용하여 풀었습니다. 문제 그대로 가장 앞에 있는 값을 나머지 꺼내오는 값들과 비교하여 가장 클 경우에 complete queue에 넣고 그 외에는 그대로 다시 queue에 넣어 주는 식으로 구현하였습니다. complete queue에 넣어 줄때의 location(내가 인쇄를 요청한 문서)이 0인 경우의 complete queue의 size가 문제에서 요구하는 대기 순서입니다.

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = location;
        Queue<Integer> queue = new LinkedList<>();
        Queue<Integer> completeQueue = new LinkedList<>();
        for (int i=0; i< priorities.length; i++) {
            queue.add(priorities[i]);
        }

        while(completeQueue.size() != priorities.length) {
            int firstValue = queue.poll();
            boolean isMaxPriority = true;

            for (int i = 0; i< queue.size(); i++) {
                int compareValue = queue.poll();
                if (firstValue < compareValue) {
                    isMaxPriority = false;
                }
                queue.add(compareValue);
            }

            if (isMaxPriority) {
                completeQueue.add(firstValue);
            } else {
                queue.add(firstValue);
            }

            if (isMaxPriority && location == 0) {
                answer = completeQueue.size();
                break;
            } else if (location == 0){
                location = queue.size() -1;
            } else {
                location--;
            }

        }
        return answer;
    }
}

'정리 > 알고리즘' 카테고리의 다른 글

스택/큐 - 다리를 지나는 트럭  (0) 2022.02.07
해시 - 베스트앨범  (0) 2022.02.04
스택/큐 - 기능개발  (0) 2022.02.03
해시 - 위장  (0) 2022.02.03
해시 -전화번호목록  (0) 2022.02.03

댓글