기록
[Kotlin] 성격 유형 검사하기 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/118666
요즘 유행하는 MBTI 관련 문제여서 재미있게 풀었다.
문제 접근
- 동점일 때 사전순 처리를 어떻게 할 것인가?
class Solution {
fun solution(survey: Array<String>, choices: IntArray): String {
var answer = ""
val standardZeroJipyo = mapOf(0 to "RT", 1 to "CF", 2 to "JM", 3 to "AN")
val surveyResults = IntArray(4) { 0 }
val orderedChoices = choices.map { it - 4 }.toList() as MutableList<Int>
survey.forEachIndexed { i, surv ->
if(surv.contains("R")) {
surveyResults[0] += if(surv == standardZeroJipyo[0]) orderedChoices[i] else -orderedChoices[i]
} else if(surv.contains("C")) {
surveyResults[1] += if(surv == standardZeroJipyo[1]) orderedChoices[i] else -orderedChoices[i]
} else if(surv.contains("J")) {
surveyResults[2] += if(surv == standardZeroJipyo[2]) orderedChoices[i] else -orderedChoices[i]
} else if(surv.contains("A")) {
surveyResults[3] += if(surv == standardZeroJipyo[3]) orderedChoices[i] else -orderedChoices[i]
}
}
surveyResults.forEachIndexed { i, result ->
answer += if(result > 0) standardZeroJipyo[i]!![1] else standardZeroJipyo[i]!![0]
}
return answer
}
}
문제 해결
사전순 지표를 만들고 이후 모든 기준은 사전순으로 처리한다.
동점 처리를 쉽게 하기위해 기존 choices 배열에서 -4를 한 리스트를 새로 만들었다.
각 survey가 사전순 지표 순서와 같다면 서베이 값을 그대로 더하고, 아니면 음수값을 더했다.
각 지표에 대한 총 서베이 값이 0 이하면 첫번째 유형을, 1 이상이라면 두번째 유형을 더해 반환한다.
반응형
'[Study] > 코딩테스트 연습' 카테고리의 다른 글
삽입 정렬 (0) | 2023.04.13 |
---|---|
퀵 정렬 (0) | 2023.04.13 |
[Kotlin] 로또의 최고 순위와 최저 순위 (0) | 2022.07.15 |
[Python] 124 나라의 숫자 (0) | 2021.04.21 |
[Python] 키패드 누르기 (0) | 2020.11.10 |