Search

프로세스

알고리즘
연습문제
플랫폼
프로그래머스
JCF
LinkedList
상태
해결
생성 일시
2023/12/19 11:42
최종 편집 일시
2024/01/11 10:24

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public int solution(int[] priorities, int location) { int answer = 0; // 우선순위, 인덱스를 가진 LinkedList process 생성 LinkedList<String> processes = new LinkedList<>(); // process 에 프로세스 데이터(우선순위, 인덱스) 삽입 int index = 0; for(int priority : priorities) { processes.add(priority + "," + index++); } // 우선순위가 가장 큰 값을 찾기 위해 priorities 정렬 끝에부터 점차 접근 Arrays.sort(priorities); // 가장 우선순위가 높은 값 int maxPriority = priorities.length-1; int processIndex = 0; int locate = -1; while(locate != location) { for(int i = 0; i < processes.size(); i++) { // processes의 i번째 인덱스에 값을 가져온다. String process = processes.getFirst(); // ',' 를 기준으로 우선순위 값과 location 값을 가지고 있다. int commaIndex = process.indexOf(","); // 우선순위 값 int priority = Integer.parseInt(process.substring(0, commaIndex++)); // location 값 // 현재 프로세스의 우선순위가 가장 우선순위가 큰 값과 같다면 if(priority == priorities[maxPriority]) { // 프로세스 실행 processes.removeFirst(); locate = Integer.parseInt(process.substring(commaIndex, process.length())); maxPriority--; break; } else { // 프로세스 뒤로 옮기기 processes.addLast(processes.removeFirst()); } } answer++; } return answer; } }
Java
복사