728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42587
728x90
메모리: 71.7 MB, 시간: 1.48 ms
사용 알고리즘: 큐, 덱큐, 우선순위큐
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
// 인덱스 번호와 우선순위를 담은 배열을 넣을 큐
Deque<int[]> deque = new ArrayDeque<>();
for(int i = 0; i < priorities.length; i++) {
deque.offerLast(new int[] {i, priorities[i]});
}
// 우선순위를 내림차순으로 정렬
PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
for(int i = 0; i < priorities.length; i++) {
pq.add(priorities[i]);
}
int[] now;
int answer = 0;
while(!deque.isEmpty()) {
now = deque.pollFirst();
// 우선순위가 가장 높은 프로세스가 아니라면
if(now[1] != pq.peek()) {
deque.addLast(now);
}
// 우선순위가 가장 높은 프로세스라면
else {
pq.poll();
answer++;
// 몇 번째로 실행되는지 알고 싶은 프로세스를 찾았다면
if(now[0] == location) {
break;
}
}
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 340200] [PCCE 기출문제] 8번 / 닉네임 규칙 (java) (0) | 2024.10.05 |
---|---|
[프로그래머스, 81301] 숫자 문자열과 영단어 (java) (0) | 2024.10.01 |
[프로그래머스, 154539] 뒤에 있는 큰 수 찾기 (java) (1) | 2024.09.26 |
[프로그래머스, 1844] 게임 맵 최단거리 (java) (4) | 2024.09.24 |
[프로그래머스, 131127] 할인 행사 (java) (0) | 2024.09.20 |