Lv2. 프린터 Javascript
https://programmers.co.kr/learn/courses/30/lessons/42587
function solution(prior, location) {
const list = prior.map((num, idx) => ({
flag: idx === location,
value: num,
}));
let count = 0;
while (true) {
let pickedItem = list.shift();
if (list.some((item) => item.value > pickedItem.value)) {
list.push(pickedItem);
} else {
count++;
if (pickedItem.flag) return count;
}
}
}
function solution(prior, location) {
// flag에 내가 인쇄를 요청한 문서인지 아닌지를 담은 Boolean 값을 할당.
const list = prior.map((num, idx) => ({
flag: idx === location,
value: num,
}));
let count = 0;
while (true) {
// list에서 맨 앞 요소를 꺼냄
let pickedItem = list.shift();
// some을 통해서 현재 꺼낸 아이템보다 우선순위가 높은(큰) 숫자가 있는지 확인
if (list.some((item) => item.value > pickedItem.value)) {
// 있다면 리스트의 맨 뒤에 다시 push
list.push(pickedItem);
} else {
// 없다면, 프린트 count를 올리고
// 내가 인쇄를 요청한 문서일 경우 return
count++;
if (pickedItem.flag) return count;
}
}
}
flag를 넣을지 말지 한참을 고민했는데,
공간복잡도를 내어주고 시간복잡도를 취하는 데에 너무 많은 고민을 하지 않기.
some의 활용도가 높았던 문제.
댓글 환영
질문 환영
by.protect-me