function solution(players, callings) {
let rank = {};
players.forEach((name, index) => rank[name] = index);
for(let i = 0; i < callings.length; i++){
let winner = callings[i]; //이름
let winnerI = rank[winner];
let loserI = winnerI-1;
rank[winner]--;
rank[players[loserI]]++;
players[winnerI] = players[loserI];
players[loserI] = winner;
}
return players;
}
다른 분들의 풀이를 보고 풀 수 있었다 ㅠ
forEach 함수는 값(value)와 인덱스를 인자로 배열 순회
풀이 방법
- rank 객체를 생성해준다.
- players배열을 forEach함수로 순회해서 rank객체에 넣어준다.
예시) Mike:0, tom:1, Jane:2 ... - for문을 calling 배열의 길이 만큼 돌려준다.
- 불린 이름의 주인을 winner 변수에, 등수는 winnerI 변수에, 진사람의 등수는 loserI 변수에 넣어준다. (여기서 1등은 0이 들어가겠지)
- rank 객체에 저장되어있던 등수를 변경해준다.
- players 배열에 이름을 재저장한다.
- for문 루프가 끝난 후 players 배열을 리턴한다.