T_era
[JAVA] 큐 : 프로세스 본문
1. 문제내용

요약
프로세스의 우선순위가 들어간 배열과 원하는 프로세스의 index가 주어지고
프로세스가 우선순위대로 실행하되 우선순위가 아닌 프로세스는 가장 뒤로 밀린다
이렇게 작동했을 때 index에 위치한 프로세스는 몇번째로 작동하는지 출력하라
2. 접근방법
우선순위가 낮을 경우 마지막으로 이동을 생각했을 때 큐의 poll과 push를 이용해 값을 찾으면 될 것으로 보인다
큐에 index를 모두 저장하고 배열과 비교하여 큐의 index보다 큰 값이 있으면 큐의 맨뒤에 다시 push하는 과정을 거치면 해결될 것 같다
3. 구현 과정
큐를 선언하고 배열의 크기만큼 index를 저장
Queue<Integer> queue = new LinkedList<>();
for(int i = 0; i < priorities.length; i++){
queue.offer(i);
}
결과를 출력할 count와 큐가 비어있지 않으면 계속 반복
순차적으로 꺼내는 index와 배열의 전체를 하나씩 비교하면서 큐에서 꺼낸 값보다 큰 값이 나오면
큐를 다시 삽입하여 찾는 과정을 거친다
int count = 0;
while (!queue.isEmpty()){
int current = queue.poll();
boolean isMax = true;
for(int index : queue){
if(priorities[index] > priorities[current]){
isMax = false;
break;
}
}
if(isMax){
count++;
if(current == location) return count;
}else{
queue.offer(current);
}
}
4. 결과

전체 코드
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int[] priorities, int location) {
Queue<Integer> queue = new LinkedList<>();
for(int i = 0; i < priorities.length; i++){
queue.offer(i);
}
int count = 0;
while (!queue.isEmpty()){
int current = queue.poll();
boolean isMax = true;
for(int index : queue){
if(priorities[index] > priorities[current]){
isMax = false;
break;
}
}
if(isMax){
count++;
if(current == location) return count;
}else{
queue.offer(current);
}
}
return count;
}
}'Programing > Programers' 카테고리의 다른 글
| [JAVA] 힙 : 이중 우선순위 큐 (0) | 2025.04.21 |
|---|---|
| [JAVA] 스택 : 주식가격 (0) | 2025.04.21 |
| [JAVA] 스택 : 올바른 괄호 (1) | 2025.04.14 |
| [JAVA] 큐 : 기능개발 (0) | 2025.04.14 |
| [JAVA] 스택 : 같은 숫자는 싫어 (0) | 2025.04.14 |