Lv.2 : 프로세스 [JavaScript]

2024. 11. 3. 19:13Algorithm/프로그래머스

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 풀이

function solution(priorities, location) {
    var answer = 0;
    var arr = priorities.map((e, idx) => [e, idx]);
    
    while(arr.length > 0){
        var first = arr.shift();
        if(arr.filter((e)=> e[0] > first[0]).length != 0) arr.push(first);
        else{
            answer++;
            if(first[1] == location) break;
        }
    }
    
    return answer;
}

우선순위와 프로세스의 위치 둘 다 확인이 필요하므로, arr배열을 만들어 우선순위와 priorities에서의 index를 가지는 배열을 넣어준다.

 

테스트 1 arr : [ [ 2, 0 ], [ 1, 1 ], [ 3, 2 ], [ 2, 3 ] ]

테스트 2 arr : [ [ 1, 0 ], [ 1, 1 ], [ 9, 2 ], [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ]

 

arr를 돌면서 문제의 설명과 같이

제일 앞 원소를 꺼낸 후, arr에 꺼낸 원소보다 높은 우선순위를 가진 원소가 있다면 arr에 다시 넣는다.

높은 우선순위를 가진 원소가 없다면, 실행 순서인 answer을 늘려주고, 만약 꺼낸 원소의 index인 first[1]가 location과 같다면 while문을 멈추고 리턴

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

Lv.1 : 모의고사 [JavaScript]  (1) 2024.11.07
Lv.2 : 의상 [JavaScript]  (0) 2024.11.06
Lv.2 : [1차] 캐시 [JavaScript]  (0) 2024.11.02
Lv.2 : 괄호 회전하기 [JavaScript]  (0) 2024.10.28
Lv.1 : 추억 점수 [JavaScript]  (1) 2024.10.26