프로그래머스 알고리즘 Level 1 코틀린 2022 카카오 TECH INTENSHIP 성격 유형 검사하기 문제
2023. 1. 25. 19:24ㆍ알고리즘/문제
https://school.programmers.co.kr/learn/courses/30/lessons/118666
풀이 - 성공
class Solution {
fun solution(survey: Array<String>, choices: IntArray): String {
var answer: String = ""
val name = arrayOf("R", "T", "C", "F", "J", "M", "A", "N")
val score = intArrayOf(3, 2, 1, 0, 1, 2, 3)
val table = LinkedHashMap<String, Int>()
val surveyM = survey.map { it.chunked(1) }
val answerList = mutableListOf<String>()
name.forEach {
table[it] = 0
}
choices.forEachIndexed { i, num ->
if (num > 4) table[surveyM[i][1]] = score[num - 1] + table[surveyM[i][1]]!!
else {
if (num < 4) table[surveyM[i][0]] = score[num - 1] + table[surveyM[i][0]]!!
}
}
for (i in 0..3) {
when (i) {
0 -> {
when {
table["R"]!! > table["T"]!! -> {
answerList.add("R")
}
table["R"]!! < table["T"]!! -> {
answerList.add("T")
}
else -> {
answerList.add("R")
}
}
}
1 -> {
when {
table["C"]!! > table["F"]!! -> {
answerList.add("C")
}
table["C"]!! < table["F"]!! -> {
answerList.add("F")
}
else -> {
answerList.add("C")
}
}
}
2 -> {
when {
table["J"]!! > table["M"]!! -> {
answerList.add("J")
}
table["J"]!! < table["M"]!! -> {
answerList.add("M")
}
else -> {
answerList.add("J")
}
}
}
else -> {
when {
table["A"]!! > table["N"]!! -> {
answerList.add("A")
}
table["A"]!! < table["N"]!! -> {
answerList.add("N")
}
else -> {
answerList.add("A")
}
}
}
}
}
answer = answerList.joinToString("")
return answer
}
}
평가 )
해쉬맵에 각 지표를 넣어서 0으로 초기화시켜 준다.
그리고 선택한 choices array를 하나씩 반복문으로 보는데
여기서 num이 4 이상이면 해쉬맵에 점수를 3, 2, 1, 0, 1, 2, 3 이렇게 생각하고 index에 맞는 값을
지표에 맞게 넣었다.
그리고 4번을 반복해서
맨 앞의 지표부터 확인해서 점수를 비교하고 list에 add 한다.
전체적인 코드는 별로인 것 같다.
일단 함수형 활용을 거의 안 했고 when으로 저렇게 분기를 많이 해서 해야 하나 싶다...
그래서 좀 별로다 더 생각해 봐야겠다.
'알고리즘 > 문제' 카테고리의 다른 글
프로그래머스 알고리즘 Level 1 2019 카카오 개발자 겨울 인턴쉽 크레인 인형뽑기 게임 (0) | 2023.01.25 |
---|---|
프로그래머스 알고리즘 Level 1 코틀린 2021 KAKAO BLIND RECRUITMENT신규 아이디 추천 (0) | 2023.01.25 |
프로그래머스 알고리즘 Level 1 햄버거 만들기 (0) | 2023.01.24 |
프로그래머스 Level 1 코틀린 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 (0) | 2023.01.24 |
프로그래머스 알고리즘 Level 1 코틀린 문자열 나누기 (2) | 2023.01.23 |