풀이.
- prioirities 배열의 인덱스와 배열의 요소를 갖는 Process 클래스 생성
- 생성된 Process 객체를 큐에 담기
- 큐가 비어있을 때 까지 while문 돌리기
- 큐 poll() 한 process 객체를 만들고
- for each문을 돌며 process의 priority 와 큐에 존재하는 prioirity를 비교
- process의 priority가 큐에 남아있는 priority 작다면 다시 큐에 offer(process)
- process null 변경해주고 for each문 멈춤
- process가 null 이 아니라면 가장 우선순위에 있는 프로세스가 실행되고 종료됨을 의미하기에
- answer++ 하면서 process의 idx와 location을 비교해 일치한다면 answer return;
import java.util.Queue;
import java.util.LinkedList;
class Process {
int idx;
int priority;
public Process(int idx, int priority) {
this.idx = idx;
this.priority = priority;
}
}
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<Process> queue = new LinkedList<>();
for (int i = 0; i < priorities.length; i++) {
queue.offer(new Process(i, priorities[i]));
}
while (!queue.isEmpty()) {
Process process = queue.poll();
for (Process p : queue) {
if (process.priority < p.priority) {
queue.offer(process);
process = null;
break;
}
}
if (process != null) {
answer++;
if (process.idx == location) {
return answer;
}
}
}
return answer;
}
}
'CODING TEST' 카테고리의 다른 글
프로그래머스 - 다항식 더하기 (0) | 2023.08.01 |
---|---|
프로그래머스 - 달리기 경주 (0) | 2023.07.28 |
기초수학 - 집합(Set)과 관련 코딩테스트 문제들 (0) | 2023.05.31 |
백준 1890번 - 동전 0 (0) | 2023.05.30 |
백준 2167번 - 2차원 배열의 합 (0) | 2023.05.29 |