기록

[Kotlin] 성격 유형 검사하기 본문

[Study]/코딩테스트 연습

[Kotlin] 성격 유형 검사하기

Dannnnnn 2022. 11. 7. 03:19
반응형

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

 

프로그래머스

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

programmers.co.kr

 

요즘 유행하는 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