[프로그래머스] 프린터(Java)

수경·2023년 1월 30일
0

problem solving

목록 보기
108/174

프로그래머스 - 프린터

풀이

priority queue 사용

  1. priority queue에 데이터 저장 -> 우선순위대로 저장됨

  2. 원본 데이터와 큐에 저장된 값을 비교하면서 순서 계산

priorities = {2, 1, 3, 2} 가 입력으로 주어질 때,
queue = {3, 2, 2, 1} (우선순위 큐)

모든 원소의 프린트 순서

whilefor - iqueuequeue.peek()priorities[i]result
1st0{3, 2, 2, 1}320
1st1{3, 2, 2, 1}310
1st2{3, 2, 2, 1}331
1st3{2, 2, 1}222
2nd0{2, 1}223
2nd1{1}114

이 문제에서는 location 인덱스에 해당하는 값의 출력 순서를 리턴하면 됨 -> if(i == location) return result;


코드

import java.util.*;

public class Printer {
	public int solution(int[] priorities, int location) {
		PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
		int result = 0;
		for (int priority : priorities) {
			queue.add(priority);
		}

		while (!queue.isEmpty()) {
			for (int i = 0; i < priorities.length; i++) {
				if (queue.peek() == priorities[i]) {
					result++;
					queue.poll();
					if (i == location) return result;
				}
			}
		}

		return result;
	}

	public static void main(String[] args) {
		Printer printer = new Printer();
		System.out.println(printer.solution(new int[]{2, 1, 3, 2}, 0));
		System.out.println(printer.solution(new int[]{1, 1, 9, 1, 1, 1}, 0));
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글