[Programmers / Level 2] 42587. 프로세스 (Java)

이하얀·2025년 1월 25일
0

🕊️ 프로그래머스

목록 보기
93/97

💡 Info




입출력 조건




입출력 예시




문제 이해


  • Queue를 이용해 프로세스가 실행되는 순서를 알려주는 알고리즘 구성


알고리즘


풀이 시간 : 24분

[DeQueue를 통해 양방향 구성]

  • 초기화
    • 모든 프로세스를 (index, priority) 형태로 Deque
    • 우선순위만 따로 리스트에 저장한 후, 내림차순 정렬
  • 처리 과정
    • 큐에서 프로세스 하나씩 가장 높은 우선 순위와 비교
    • 우선 순위가 가장 높은 것만 제거, 실행 순서 ++
    • 우선순위 낮으면 다시 큐에 넣음
  • 실행된 프로세스가 목표 location이면 실행 순서 반환
import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        Deque<int[]> deque = new ArrayDeque<>();
        List<Integer> sortedPriorities = new ArrayList<>();

        for (int i = 0; i < priorities.length; i++) {
            deque.offer(new int[]{i, priorities[i]});
            sortedPriorities.add(priorities[i]);
        }

        sortedPriorities.sort(Collections.reverseOrder());

        int count = 0;
        int index = 0;

        while (!deque.isEmpty()) {
            int[] current = deque.poll();

            if (current[1] != sortedPriorities.get(index)) {
                deque.offer(current);
                continue;
            }

            count++;
            index++;

            if (current[0] == location) {
                return count;
            }
        }
        return count;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글

관련 채용 정보