Algorithm/프로그래머스
[프로그래머스] 프린터 (Javascript)
GrapeMilk
2021. 9. 20. 14:49
문제링크
( https://programmers.co.kr/learn/courses/30/parts/12081 )
분류
- Stack / Queue
1. 풀이 힌트
- 출력되야 하는 프린터의 우선순위와 인덱싱을 함께 고려하기 위해 우선순위를 담은 고유 객체 배열을 만들어 준다.
- 우선순위의 배열을 정렬 한 뒤 가장 높은 우선순위와 현재 출력되는 프린터를 비교 한 뒤 문제의 조건대로 알고리즘을 구현한다.
2. 코드 풀이
function solution(priorities, location) {
let objArr = priorities.map((pr, idx) => ({ pr }));
priorities.sort((a, b) => a - b)
const sortedPrArr = [...priorities];
let target = objArr[location];
let answer = 0;
let maxPr = sortedPrArr.pop();
while (objArr.length > 0) {
if (maxPr === objArr[0].pr) {
answer++;
if (objArr[0] === target) {
return answer;
} else {
maxPr = sortedPrArr.pop();
objArr = objArr.slice(1);
}
} else {
const [first, ...others] = objArr;
others.push(first);
objArr = others;
}
}
return answer;
}