고득점 Kit [스택/큐] - 프로세스

세나정·2023년 5월 2일
0

문제

내 풀이

처음에 거의 2시간을 매달려서 우선순위를 max로 찾아 다른 값으로 치환해 풀다가 생각해보니 여러개의 max값이 있을 떄 그 처리를 해주지 않아 한참을 헤맸다.

function solution(priorities, location) {
    let ans = 0;
    let position = []
    let max = Math.max(...priorities);

    //1. 인덱스로 이루어진 position map을 만듦
    for(let i = 0; i < priorities.length; i++){
        position.push(i);
    }

    //2. 알고리즘 뽑기
    while(priorities.length != 0){
        // 처음이 우선순위 (가장 큰 값)가 아니라면 옮기면서 처음이 우선순위가 가장 높도록 설정
        if(priorities[0] < max){
            
            priorities.push(priorities.shift());
            position.push(position.shift());
            
        } else {
            // location이 나올 때까지 ans에 1을 더해줌 
            ans+=1;
            priorities.shift();
            
            if(position.shift() == location)
                return ans;
            
            // 뽑아줬을 때 다시 max값을 지정하여 while을 돌도록
            max = Math.max(...priorities);
        }
    }
    // 다른 사람 풀이 : 힌트
    // 각 priorities의 index를 가리키는 position map을 만들어 놓고
    // priorities과 같이 움직이게 하면 쉽게 풀 수 있습니다 라고한다.
}

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글