본문 바로가기

알고리즘

[코딩 테스트] Level. 1 추억 점수 (코틀린, Kotlin)

728x90

코딩 테스트 . 추억점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

나의 문제 풀이 .

해쉬맵과 ContainsKey() 를 사용해서 풀었다.

private fun solution(
    name: Array<String>,
    yearning: IntArray,
    photo: Array<Array<String>>
): IntArray {
    var answer: IntArray = intArrayOf()

    val hashMap = HashMap<String, Int>()

    name.forEachIndexed { index, s ->
        hashMap[s] = yearning[index]
    }

    photo.forEach { array ->
        var b = 0
        array.forEach {
            if (hashMap.containsKey(it)) {
                b += hashMap[it]!!
            }
        }
        answer += b
    }
    return answer
}

 

고수의 문제 풀이.

zip() 과 toTypedArray(), toMap(), sumOf() 를 사용해서 풀었다.

    fun solution(names: Array<String>, yearnings: IntArray, photoes: Array<Array<String>>): IntArray {
        val map = names.zip(yearnings.toTypedArray()).toMap()
        return photoes.map { photo -> photo.sumOf { map[it] ?: 0 } }.toIntArray()
    }

 

 

 

레벨 1 코딩 테스트가 어느 덧 끝났다.

많이 오래 걸렸지만 그래도 뿌듯한 건 뿌듯한 거라고 생각하고 언제쯤 고수들의 코드로 작성할 수 있을지

현타가 많이 온다. 아직도 가야할 길이 많지만 조금이라도 성장하려고 노력해야겠다.