[프로그래머스] Lv1. 달리기 경주 - JavaScript

이상돈·2023년 4월 10일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 1

출처 : 프로그래머스 - 달리기 경주

문제

제한사항

📌 내가 생각한 풀이

배열에 직접 접근하여 값을 바꾸려면 시간 초과가 일어난다. 따라서 key:사람이름, value:등수 인 Map객체를 이용하여 Hash테이블을 만들고, 이를 이용하여 players배열의 값을 바꿔주자!
function solution(players, callings) {
    var answer = [];
    let map = new Map();
    players.forEach((d,i)=>map.set(d,i))
    
    callings.forEach((data,idx)=>{
        let curIdx = map.get(data);
        let curPlayer = players[curIdx];
        let prevPlayer = players[curIdx-1];
        players[curIdx] = prevPlayer;
        players[curIdx-1] = curPlayer;
        map.set(curPlayer, curIdx-1)
        map.set(prevPlayer, curIdx)
    })
    return players
}

📌 느낀점

map객체를 사용하여 런타임에러를 잡았다. obj = {}를 자주 사용하였지만, 중복값 처리를 해주는 map객체를 이용하면, 훨씬 빠른 문제해결력이 있다는 것을 알았다.

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글