프로그래머스 - [Level 2] 프린터(JAVASCRIPT)

less than 1 minute read

프로그래머스 모의고사

카테고리 : 스택/큐

[참고]
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