https://school.programmers.co.kr/learn/courses/30/lessons/42587
풀이 - 나의 생각
1. 맨 앞에 있는 프로세스 꺼내
2. 그 프로세스보다 우선 순위 높은지(priorities[arr.length - cnt]) 확인
3-1. YES -> 다시 queue에 넣기
3-2. NO == 현재 프로세스가 가장 높은 우선순위임( priorities[arr.length - cnt] )
cnt++; (실행된 프로세스 개수)
-> 이 프로세스가 내가 알고 싶었던 프로세스야?(location == 0)
Yes -> break;
위의 과정만 진행하면 답이 나오는 문제였다.
이 걸 위해서는 우선순위가 정렬되어 있는 배열이 필요했다.
그래서 주어진 배열( priorities)을
순서 그대로 Queue에 넣고
Arrays.sort( priorities)로 정렬 후
뒤에서 부터 값을 확인했다.
코드
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<Integer> q = new ArrayDeque<>();
for(int i : priorities){
q.offer(i);
}
Arrays.sort(priorities);
int len = priorities.length-1;
/* 맨 앞에 있는 프로세스 꺼내
그 프로세스보다 우선 순위 높은지(priorities[max]) 확인
YES -> 다시 queue에 넣기
NO == 현재 프로세스가 가장 높은 우선순위임(priorities[max])
-> answer++; (프로세스 실행 순서)
-> 이 프로세스가 내가 알고 싶었던 프로세스야?(location == 0)
Yes -> break;
*/
while(!q.isEmpty()){
int now = q.poll();
if(now < priorities[len - answer]){
q.offer(now);
}else{
answer++;
if(location == 0){
break;
}
}
location = location-1<0?q.size()-1:location-1;
}
return answer;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT > [3차] 압축 - JAVA (1) | 2024.01.06 |
---|---|
2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 - JAVA (1) | 2024.01.04 |
코딩테스트 연습 > [1차] 캐시 - JAVA (1) | 2023.12.31 |
코딩테스트 연습 > 귤 고르기 > - JAVA (0) | 2023.12.20 |
코딩테스트 연습 > N개의 최소공배수 - JAVA (1) | 2023.12.18 |