class Solution {
val choiceMap = mutableMapOf<String, Int>("R" to 0, "T" to 0, "C" to 0, "F" to 0, "J" to 0, "M" to 0, "A" to 0, "N" to 0)
var pairList : MutableList<Pair<String, String>> = mutableListOf()
fun getScore(choiceIdx: Int): Int {
return when(choiceIdx) {
1 -> 3
2 -> 2
3 -> 1
5 -> 1
6 -> 2
7 -> 3
else -> 0
}
}
fun initPairList() {
pairList.add(Pair("R", "T"))
pairList.add(Pair("C", "F"))
pairList.add(Pair("J", "M"))
pairList.add(Pair("A", "N"))
}
fun calculateScore(survey: Array<String>, choices: IntArray) {
choices.forEachIndexed{ i, v ->
var selectedText = ""
var selectedScore = 0
if(v < 5) {
selectedText = survey.get(i).substring(0, 1)
} else if(v > 4) {
selectedText = survey.get(i).substring(1, 2)
}
selectedScore = getScore(v)
choiceMap[selectedText] = choiceMap[selectedText]!! + selectedScore
}
}
fun compairValues() {
pairList.forEachIndexed { i, e ->
if(choiceMap[e.first]!! >= choiceMap[e.second]!!) {
choiceMap.remove(e.second)
} else {
choiceMap.remove(e.first)
}
}
}
fun solution(survey: Array<String>, choices: IntArray): String {
var answer: String = ""
initPairList()
calculateScore(survey, choices)
compairValues()
choiceMap.entries.map{
answer += it.key
}
return answer
}
}
하아..
1. 처음에 List<Map<String, int>> 이런 데이터 형의 배열을 만들어내면 initPairList() 같은 함수가 필요없어질거라 생각했는데 방법을 못 찾았다.
[{"R" : 0, "T": 0}, {"C": 0, "F": 0} ...]
이거 안되나??? T.T
그럼 일렬로 만든 맵을 쌍을 지어서 어떻게 비교해야 하는가...를 고민하다 만든게 pairList 인데, 그냥 키 값을 내가 고정으로 주면 되는거였다. 왤케 어렵게 생각했을까..ㅎ
이현빈님 코드 참조해보면 이렇게 줘도 될 것 같다.
나는 마지막에 값을 비교해서, 필요없는 값을 remove로 지워버린뒤,
다시 map을 루프 돌려서 answer에 key를 붙히는 방법으로 했는데
그러다보니 루프를 3번이나 돌려야했다....
아니.. Map의 장점이 무엇인가! "key"값으로 바로 "value"를 얻을 수 있다는건데!!!!
이걸 루프를 돌려서 찾아서 지우고 남은 key만 쓴다? 왜????????????
보고나니 한심함ㅎ
result = if(map.getValue('R') >= map.getValue('T')) "R" else "T"
result += if(map.getValue('C') >= map.getValue('F')) "C" else "F"
result += if(map.getValue('J') >= map.getValue('M')) "J" else "M"
result += if(map.getValue('A') >= map.getValue('N')) "A" else "N"
코테를 보면서 함수로 분리시켜가며 보는게 가능할까? 가능하면 좋겠다.
최소 직사각형 문제도 주중에 한 번 봤었는데
지인짜 도오저히 못풀겠어서 풀이를 보고야 말았다...
maxOfNull() 유용하다 유용해...ㅠㅠ
내 나름 머릿속에 넣으려면 정리해둬야겠당