https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
⭐️ 중요 포인트
1. PriorityQueue를 내림차순으로 정렬시켜 남은 프로세스들을 관리
2. priorities를 순서대로 순회하며 우선순위에 맞게 반복
(남은 프로세스(restProcess)에서 이미 poll()된 값들은 비교하지 않으므로 우선순위가 높은 순으로 비교가 가능함.
단, for문을 끝까지 돌아야 바로 다음부터 비교하는 시뮬레이션이 돌아가므로 for문을 순회)
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<Integer> restProcess = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < priorities.length; i++) {
restProcess.add(priorities[i]);
}
while (!restProcess.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
if (restProcess.peek() == priorities[i]) {
restProcess.poll();
answer++;
if (i == location) {
return answer;
}
}
}
}
return answer;
}
}
'프로그래머스 알고리즘 > Java' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 - Java (0) | 2025.04.24 |
---|---|
[프로그래머스] 큰 수 만들기 - Java (0) | 2025.04.24 |
[프로그래머스] 베스트앨범 - Java (0) | 2025.04.23 |
[프로그래머스] 의상 - Java (0) | 2025.04.23 |
[프로그래머스] 전화번호 목록 - Java (0) | 2025.04.23 |