728x90
https://programmers.co.kr/learn/courses/30/lessons/42587#qna
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
스택/큐 문제 중의 큐 문제. 처음엔 priorities 배열을 큐에 넣고, 숫자 배열을 정렬하여 큐의 첫번째 있는 원소가 배열의 맨 앞에 있는 것과 비교할 생각이었다. 두 개(큐 첫번째 원소, 정렬한 배열의 첫번째 원소, 즉 가장 큰 숫자)가 같으면 큐에서 출력을 하고, 배열의 원소를 바꿔주는 식으로 이어 나가려 했으나, int 배열의 내림차순 정렬하기 보단 PQ를 쓰는 것이 더 좋을 것 같아서 바꿔 풀었고, 금방 해결했다!
내가 인쇄를 요청한 것이 몇번째에 있는지 알기 위해 Print라는 클래스를 만들어서 정의해주었다.
import java.util.*;
class Print {
int pri;
boolean chk;
public Print(int pri, boolean chk) {
this.pri = pri;
this.chk = chk;
}
}
public class 프린터 {
public int solution(int[] priorities, int location) {
Queue<Print> q = new LinkedList<>();
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int i = 0; i < priorities.length; i ++) {
boolean chk = false;
if(i == location) chk = true;
q.add(new Print(priorities[i], chk));
pq.add(priorities[i]);
}
int cnt = 0;
while (!q.isEmpty()) {
Print cur = q.poll();
if(cur.pri == pq.peek()) {
cnt ++;
if(cur.chk) break;
pq.poll();
} else q.add(cur);
}
return cnt;
}
}728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 큰 수 만들기 자바 풀이 (0) | 2022.06.08 |
|---|---|
| 프로그래머스 전화번호 목록 자바 풀이 (0) | 2022.06.05 |
| 프로그래머스 표 편집 자바 풀이 (0) | 2022.04.19 |
| 프로그래머스 크레인 인형뽑기 자바 풀이 (0) | 2022.04.14 |
| 프로그래머스 키패드 누르기 자바 풀이 (0) | 2022.04.14 |