달리기 경주

이지영·2025년 1월 10일

문제풀이
중복 저장이 안되는 map을 활용하여
선수 이름과 인덱스 값-쌍을 저장하였고

idx에 불려진 선수의 인덱스를 저장 후

calledPalyer과 frontPlayer변수를 선언하여
불린 선수와 불린 선수의 바로 앞 선수를 각각 저장하였다.

그리고 players배열에 두 선수의 순서를 바꿔주었고
또한 map에서도 인덱스를 수정해주는 방식으로 풀었다.

function solution(players, callings) {
    // map으로 선수이름과 인덱스 저장
    const playersIndex = new Map();
    players.forEach((player,idx) => playersIndex.set(player,idx));
    
    for(let i = 0; i<callings.length; i++){
        const idx = playersIndex.get(callings[i]);
        const calledPlayer = players[idx];
        const frontPlayer = players[idx-1];
        
        players[idx-1] = calledPlayer;
        players[idx] = frontPlayer;
        
        playersIndex.set(frontPlayer,idx);
        playersIndex.set(calledPlayer,idx-1)
    }
    return players;
}

0개의 댓글