요약 | 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하라
Array<String>
Array<String>
선수가 최대 5만명, 부르는 횟수는 최대 100만으로 상당히 긴 데이터가 들어올 수도 있어 처리 시간에 유의해야 한다.
Array<String>
MutableMap<String, Int>
class Solution { fun solution(players: Array<String>, callings: Array<String>): Array<String> { val playerMap = mutableMapOf<String, Int>() players.forEachIndexed { index, value -> playerMap[value] = index} callings.forEach { call -> val idx = playerMap[call]!! //현재 인덱스 if (idx > 0) { val prevPlayer = players[idx - 1] //앞 선수의 이름 playerMap[prevPlayer] = idx //앞 선수의 순번을 불린 선수 것으로 변경 players[idx] = prevPlayer //배열상 앞 선수의 위치를 불린 선수 위치로 변경 playerMap[call] = idx - 1 //불린 선수의 순번에서 1 빼기 players[idx - 1] = call //배열상 불린 선수의 위치를 한칸 앞으로 변경 } } return players } }
[TIL-240327]