프로그래머스 - [Level 2] 프린터(JAVASCRIPT)
카테고리 : 스택/큐
[참고]
map으로 새롭게 만들어진 list 배열은 다음과 같은 형태를 갖는다.
[
{ myStatus: false, value: 2 },
{ myStatus: false, value: 1 },
{ myStatus: true, value: 3 },
{ myStatus: false, value: 2 }
]
some 함수는 배열을 순회하면서 조건문에 대해서 true or false를 반환한다.
[문제 풀이 과정]
이제, list에서 우선순위가 큰 순서대로 제거해나간다.
list의 맨 앞 원소를 추출(shift())해주고 => "cur"
some 함수로 배열을 순회하며,
1)
cur(현재) 값보다 큰 값(우선순위가 앞서는)이
존재한다면 다시 list의 마지막 위치에 넣어주고, while문을 반복한다.
2)
cur(현재) 값이 최우선순위일 경우에는 count를 +1 해주고,
문제에서 찾고자 하는 값인지 체크해준다.
맞다면 return count 를
그렇지 않다면 다시 while문을 반복한다.
[오류]
javascript는 'value'를 'vlaue'로 적어도 문법오류를 뱉지 않았다.
첫 코드부터 실수 없이 짜는게 중요할 것 같다.
소스코드
function solution(priorities, location) {
var list = priorities.map((target,index)=>({
myStatus: index === location,
value: target
}));
var count=0;
while(true){
var cur=list.shift();
if(list.some(target => target.value > cur.value)){
list.push(cur);
}else{
count++;
if(cur.myStatus) return count;
}
}
}
Leave a comment