https://school.programmers.co.kr/learn/courses/30/lessons/178871
class Solution {
fun solution(players: Array<String>, callings: Array<String>): Array<String> {
val rankMap = mutableMapOf<String, Int>()
players.forEachIndexed { index, player ->
rankMap[player] = index
}
callings.forEachIndexed { index, player ->
val calledPlayerRank = rankMap[player] ?: 0
val frontPlayer = players[calledPlayerRank - 1]
players[calledPlayerRank -1 ] = player
players[calledPlayerRank] = frontPlayer
rankMap[player] = calledPlayerRank - 1
rankMap[frontPlayer] = calledPlayerRank
}
return players
}
}
rankMap에 {mumu=0, soe=1, poe=2, kai=3, mine=4} 이런 형식으로 플레이어와 그 인덱스 값을 저장해준다.
이후 calling된 선수의 랭크를 통해 players안에 인덱스 값을 앞선수와 바꿔준다.
그리고 rankMap의 값도 변경시켜준다.
처음 temp에 서로 인덱스값을 바꿔주는 작업으로 접근했는데 시간 초과가 걸려 hashMap을 통해 검색 시간을 단축시켜서 해결하였다.
'Code KATA' 카테고리의 다른 글
Programmers 최빈값 구하기 with Kotlin (0) | 2024.01.11 |
---|---|
Programmers 공원 산책 with Kotlin (0) | 2023.12.29 |
Programmers 개인정보 수집 유효기간 with Kotlin (0) | 2023.12.27 |
Programmers 바탕화면 정리 with Kotlin (0) | 2023.12.22 |
Programmers 성격 유형 검사하기(2022KaKaoTech) with Kotlin (1) | 2023.12.21 |