algorithm/문제풀이
스택/큐 > 프로세스
yongfront
2024. 2. 22. 04:20
반응형
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.
2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다.
3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다.
3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.
를 실제로 구현해보고자 했다
function solution(priorities, location) {
let arr = [];
while (priorities.length > 0) {
let q = priorities.shift();
q < Math.max(...priorities) ? priorities.push(q) : arr.push(q);
}
console.log(arr);
return arr[location];
}
제대로 구현은 되지만 각각의 위치를 알 수가 없는 문제가 발생
객체화 해서 각각의 index를 파악해야함
function solution(priorities, location) {
let arr = [];
// priorities 배열의 각 요소를 {index, priority} 객체로 변환
let objects = priorities.map((priority, index) => ({ index, priority }));
while (objects.length > 0) {
let current = objects.shift();
// 현재 문서보다 우선순위가 높은 문서가 남아 있다면, 현재 문서를 배열 끝으로 이동
if (objects.some(obj => obj.priority > current.priority)) {
objects.push(current);
} else {
// 그렇지 않다면 현재 문서를 arr 배열에 인쇄
arr.push(current);
}
}
// arr 배열에서 원래 location에 해당하는 문서의 위치(인덱스)를 찾아 반환
// 배열의 인덱스는 0부터 시작하지만, 인쇄 순서는 1부터 시작하므로 1을 더해줌
return arr.findIndex(obj => obj.index === location) + 1;
}
스택/큐와 더불어 우선순위와 함께 원래 인덱스를 객체로 묶어 관리하는 방법을 알아야 하는 문제
728x90
반응형
LIST