배열에 직접 접근하여 값을 바꾸려면 시간 초과가 일어난다. 따라서 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객체를 이용하면, 훨씬 빠른 문제해결력이 있다는 것을 알았다.