23.12.19 문법정리

KSang·2023년 12월 20일
0

TIL

목록 보기
15/101

HashMap

HashMap은 키와 값의 쌍을 저장하는 자료구조로, 키를 통해 값을 빠르게 검색할 수 있다.

linkedMapOf

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()

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

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에 이름을 넣어 그 선수의 현재 위치를 알아내고

앞의 요소와 순서를 바꾼다.

0개의 댓글