프로그래머스 LV2 #5 프린터
let solution = (priorities, location) => {
priorities = priorities.map((e,i) => [e, i]);
let count = 0;
while(priorities.length !== 0){
let front = priorities.shift();
if(priorities.filter(p => p[0] > front[0]).length > 0){
priorities.push(front);
}else {
count++;
if(front[1] === location){
return count;
}
}
}
return ++count;
}
이 문제는 문제에 나온 방법을 그대로 구현해서 풀었습니다.
그리고 내가 찾던 문서인지 확인하기 위해 처음에 map
메소드를 이용해 배열을 변환시키는 과정이 있습니다. 인덱스 번호가 곧 location
이므로 내가 찾던게 나오면 바로 return
해줍니다.
개인적으로 헷갈렸던 부분은 splice(0, 1)
와 shift
의 차이인데, 처음에 shift
가 왠지 기억이 안나서 splice(0, 1)
를 이용했다가 몇분정도 헤맸습니다.
[1, 2, 3, 4, 5].splice(0, 1)
과 [1, 2, 3, 4, 5].shift()
는 얼핏 생각하면 같은 결과를 반환할 것 같지만 다른 결과를 반환합니다.
[1, 2, 3, 4, 5].splice(0, 1) => [1]
[1, 2, 3, 4, 5].shift() => 1
splice
는 배열에 싸서 반환하고,
shift
는 배열에 싸지 않은 채 원소 그대로 반환합니다.