문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42587
문제 접근
1. 인덱스와 우선순위를 저장할 수 있는 클래스 생성
2. 큐에 인덱스와 우선순위 저장
3. 제일 앞 원소를 꺼내고, 나머지 원소들 중 꺼낸 원소보다 높은 우선 순위가 있는지 검사
4. 없으면 출력한 수 증가
5. 있으면 큐에 다시 넣고 1번부터 반복
소스 코드
import java.util.Queue;
import java.util.LinkedList;
class Solution {
public class Job {
public Job() {
}
public Job(int index, int priority) {
this.index = index;
this.priority = priority;
}
public int index;
public int priority;
}
public int solution(int[] priorities, int location) {
Queue<Job> q = new LinkedList<>();
for (int i = 0; i < priorities.length; i++) {
q.add(new Job(i, priorities[i]));
}
int count = 0;
while (!q.isEmpty()) {
Job job = q.poll();
if (isHigherPriority(q, job)) {
q.add(job);
} else {
count++;
if (job.index == location) {
return count;
}
}
}
return -1;
}
public boolean isHigherPriority(Queue<Job> q, Job curJob) {
for (Job job : q) {
if (job.priority > curJob.priority) {
return true;
}
}
return false;
}
}
'Coding Test > Programmers' 카테고리의 다른 글
[Java] 완주하지 못한 선수 (0) | 2022.06.29 |
---|---|
[Java] 가장 큰수 (0) | 2022.06.29 |
[Java] 짝지어 제어하기 (0) | 2022.06.26 |
[Java] 기능개발 (0) | 2022.06.26 |
[Java] 카카오프렌즈 컬러링북 (0) | 2022.06.23 |