관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 프로그래머스 프린터 -큐(queue)- 본문

알고리즘/스택, 큐

[알고리즘] 프로그래머스 프린터 -큐(queue)-

막무가내막내 2020. 6. 13. 20:41
728x90

https://programmers.co.kr/learn/courses/30/lessons/42587?language=kotlin

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

 

 

프로그래머스 LEVEL2 의 프린터 문제를 풀어봤습니다. ㅎㅎ

 

저번 문제와 마찬가지로 우선순위 큐를 사용합니다.

우선순위 순서대로 계속해서 우선순위를 변경해주고 인덱스는 유지한채로 차례대로 돌려주는게 핵심이었습니다.

 

1. 우선순위가 높은순으로 큐에 정렬

2. 큐가 비거나 내가 찾을려는 location 을 찾을때까지 반복

3. 내림차순으로 정렬된 우선순위큐의 우선순위 대로 탐색 해당 우선순위를 만나면 큐에서 poll()   

4. 내가 찾는 우선순위와 location 이면 끝

 

 

풀이는 다음과 같습니다.

 

[Java]

import java.util.Comparator;
import java.util.PriorityQueue;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 1;
        PriorityQueue<Integer> queue = new PriorityQueue<>(Comparator.reverseOrder()); // priorities 값
        for (int i : priorities) {
            queue.offer(i);
        }
        while (!queue.isEmpty()) {
            for (int i = 0; i < priorities.length; i++) {
                if (priorities[i] == queue.peek()) {
                    if (location == i) {
                        return answer;
                    }
                    answer++;
                    queue.poll();
                }
            }
        }
        return answer;
    }
}

 

[kotlin]

import java.util.*

class Solution {
    fun solution(priorities: IntArray, location: Int): Int {
        var answer = 1
        val queue = PriorityQueue(Comparator.reverseOrder<Int>()) // priorities 값
        for (i in priorities) {
            queue.offer(i)
        }
        while (!queue.isEmpty()) {
            for (i in priorities.indices) {
                if (priorities[i] == queue.peek()) {
                    if (location == i) {
                        return answer
                    }
                    answer++
                    queue.poll()
                }
            }
        }
        return answer
    }
}

 

 

감사합니다!

https://github.com/mtjin/algorithm_practice/tree/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%20%ED%94%84%EB%A6%B0%ED%84%B0%20-%EC%8A%A4%ED%83%9D%2C%ED%81%90(stack%2C%20queue)-

 

mtjin/algorithm_practice

알고리즘 문제풀이 연습. Contribute to mtjin/algorithm_practice development by creating an account on GitHub.

github.com

 

728x90
Comments