티스토리 뷰

문제링크

( https://programmers.co.kr/learn/courses/30/parts/12081 )

분류 

 - Stack / Queue

1. 풀이 힌트

 - 출력되야 하는 프린터의 우선순위와 인덱싱을 함께 고려하기 위해 우선순위를 담은 고유 객체 배열을 만들어 준다.

 - 우선순위의 배열을 정렬 한 뒤 가장 높은 우선순위와 현재 출력되는 프린터를 비교 한 뒤 문제의 조건대로 알고리즘을 구현한다.

2. 코드 풀이

function solution(priorities, location) {
    let objArr = priorities.map((pr, idx) => ({ pr }));

    priorities.sort((a, b) => a - b)
    const sortedPrArr = [...priorities];

    let target = objArr[location];
    let answer = 0;
    let maxPr = sortedPrArr.pop();

    while (objArr.length > 0) {
        if (maxPr === objArr[0].pr) {
            answer++;

            if (objArr[0] === target) {
                return answer;
            } else {
                maxPr = sortedPrArr.pop();
                objArr = objArr.slice(1);
            }
        } else {
            const [first, ...others] = objArr;
            others.push(first);
            objArr = others;
        }
    }

    return answer;
}
댓글