HashMap은 키와 값의 쌍을 저장하는 자료구조로, 키를 통해 값을 빠르게 검색할 수 있다.
linkedMapOf는 Kotlin에서 제공하는 함수로, 순서를 유지하는 링크드 해시 맵(LinkedHashMap)을 생성
키-값 쌍의 집합을 관리하는 해시 맵이지만, 요소의 삽입 순서를 기억
fun main() {
// linkedMapOf를 사용하여 LinkedHashMap 생성
val linkedMap = linkedMapOf(
"one" to 1,
"two" to 2,
"three" to 3
)
// 순서가 유지되는 링크드 해시 맵의 출력
println("LinkedHashMap: $linkedMap")
}
LinkedHashMap: {one=1, two=2, three=3}
withIndex()는 Kotlin의 표준 라이브러리 함수 중 하나로, 컬렉션의 각 요소에 대해 인덱스와 함께 반복하는 데 사용
주로 반복문에서 컬렉션의 인덱스와 값을 동시에 다루어야 할 때 유용하다
fun main() {
val colors = listOf("Red", "Green", "Blue")
for ((index, value) in colors.withIndex()) {
println("Index: $index, Value: $value")
}
}
Index: 0, Value: Red
Index: 1, Value: Green
Index: 2, Value: Blue
associate는 Kotlin의 표준 라이브러리 함수 중 하나로, 컬렉션의 각 요소에 대해 키-값 쌍을 생성하여 맵을 만드는 데 사용
fun main() {
val colors = listOf("Red", "Green", "Blue")
val colorMap = colors.associate { color ->
color to color.length
}
println("Color Map: $colorMap")
}
Color Map: {Red=3, Green=5, Blue=4}
응용
fun solution(players: Array<String>, callings: Array<String>): Array<String> {
var playerLocation = players.withIndex().associate { it.value to it.index }.toMutableMap()
callings.forEach { v ->
val locate = playerLocation[v]
if (locate != null) {
players[locate - 1] = v.also { players[locate] = players[locate - 1] }
playerLocation[v] = locate - 1
playerLocation[players[locate]] = locate
}
}
return players
}
player의 인덱스와 값을 함께 컬렉션에 저장 associate로 player의 이름을 key 위치를 쌍으로 연결
callings(플레이어 이름을 부름)으로 playerLocation에 이름을 넣어 그 선수의 현재 위치를 알아내고
앞의 요소와 순서를 바꾼다.