function solution(players, callings) {
for (let i = 0; i < callings.length; i++) {
let index = players.indexOf(callings[i]); // 3
let player = players.splice(index, 1); // 'kai'
let slicePlayers = players.slice(index - 1); // 'poe', 'mine'
let sumArr = [...player, ...slicePlayers];
players.splice(index - 1); // 현재 players ['mumu', 'soe']
players.push(...sumArr);
}
return players;
}
제한사항에 callings 갯수를 제대로 못봤었다.
function solution(players, callings) {
let playersMap = new Map();
let playerArr = [...players];
let answer = [];
playerArr.forEach((player, index) => playersMap.set(player, index));
[...callings].forEach((player, index) => {
let frontplayerIndex = playersMap.get(player) - 1; // 2
let frontplayer = players[frontplayerIndex]; // poe
players[frontplayerIndex] = player;
players[frontplayerIndex + 1] = frontplayer;
playersMap.set(player, playersMap.get(player) - 1);
playersMap.set(frontplayer, playersMap.get(frontplayer) + 1);
});
[...playersMap].sort((a, b) => a[1] - b[1]).map((arr) => answer.push(arr[0]));
return answer;
}
Map 을 이용해서 풀이했다.
value값을 통해서 key값을 가져올수는 없지만 기존 배열의 인덱스 값을 통해 가져올수 있다.