-
2022 카카오인턴십 코딩테스트 - 성격유형검사하기 - 코틀린(Kotlin)알고리즘/프로그래머스 2022. 11. 14. 00:01
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=kotlin
문제 해석
실제로 코딩 테스트를 봤던 문제이지만 코틀린으로 다시 풀어보고자 합니다.
MBTI처럼 성격유형이 존재합니다.
점수는 1~7점으로 주어지고 "AN"에 대해 점수가 주어지면 1~3점은 A에 대하여, 5~7점은 N에 대해서 점수가 나갑니다.
최종적으로 모든 점수를 계산하고 다음표를 기반으로 큰 점수를 선택하여 string을 반환합니다.
이때 점수가 같다면 알파벳순이 빠른 것이 우선순위를 가집니다.
1번 지표 라이언형(R), 튜브형(T) 2번 지표 콘형(C), 프로도형(F) 3번 지표 제이지형(J), 무지형(M) 4번 지표 어피치형(A), 네오형(N) 코드
fun main() { val survey = arrayOf("AN", "CF", "MJ", "RT", "NA") val choices = intArrayOf(5, 3, 2, 7, 5) // val survey = arrayOf("TR", "RT", "TR") // val choices = intArrayOf(7, 1, 3) val answer = solution( survey = survey, choices = choices, ) print(answer) } fun solution(survey: Array<String>, choices: IntArray): String { val map = hashMapOf<Char, Int>() choices.forEachIndexed { index, score -> if (score > 4) { map[survey[index][1]] = map.getOrDefault(survey[index][1], 0) + kotlin.math.abs(4 - score) } else { map[survey[index][0]] = map.getOrDefault(survey[index][0], 0) + kotlin.math.abs(4 - score) } } val personalityType = arrayOf("RT" , "CF" , "JM" , "AN") val result = StringBuilder() personalityType.forEach { val getFirstScore = map.getOrDefault(it[0],0) val getSecondScore = map.getOrDefault(it[1],0) when{ getFirstScore >= getSecondScore -> result.append("${it[0]}") getFirstScore < getSecondScore -> result.append("${it[1]}") } } return result.toString() }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - 카드 짝 맞추 기 - 자바(JAVA) (0) 2022.07.23 [프로그래머스] N-Queen -자바(JAVA) (0) 2022.07.12 [프로그래머스] 부족한 금액 계산하기 - 자바(JAVA) (0) 2022.07.10 [프로그래머스] 메뉴 리뉴얼 - 2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼 (0) 2022.06.23 [프로그래머스] 징검다리 건너기 : 2019 카카오 개발자 겨울 인턴십 - 자바(JAVA) (0) 2022.06.20