[알고리즘] 코틀린 스럽게 코딩하기 - 프로그래머스 118666 성격 유형 검사하기

조갱·2023년 1월 15일
1

알고리즘

목록 보기
21/22

class Solution {
    fun solution(survey: Array<String>, choices: IntArray): String {
        val scoreByType = mutableMapOf('R' to 0, 'T' to 0, 'C' to 0, 'F' to 0, 'J' to 0, 'M' to 0, 'A' to 0, 'N' to 0)
        val pair = arrayOf(Pair('R', 'T'), Pair('C', 'F'), Pair('J', 'M'), Pair('A', 'N'))
        (survey.indices).forEach { questionNo ->
            val choice = choices[questionNo]
            when (choice) {
                1, 2, 3 -> survey[questionNo][0] to 4 - choice
                5, 6, 7 -> survey[questionNo][1] to choice - 4
                else -> null
            }?.let { (type, score) -> scoreByType[type] = scoreByType[type]!! + score }
        }

        return pair.map { (f, s) ->
            f.takeIf { scoreByType.getValue(f) >= scoreByType.getValue(s) } ?: s
        }.joinToString("")
    }
}
profile
A fast learner.

0개의 댓글