https://school.programmers.co.kr/learn/courses/30/lessons/118666
class Solution {
fun solution(survey: Array<String>, choices: IntArray): String {
var answer: String = ""
var person: CharArray = charArrayOf('R', 'T', 'C', 'F', 'J', 'M', 'A', 'N')
var score: IntArray = IntArray(8) { 0 }
for (i in survey.indices) {
score[person.indexOf(survey[i][1])] += choices[i] - 4
}
for (i in 0..7 step 2) {
if (score[i] >= score[i + 1]) answer += person[i]
else answer += person[i + 1]
}
return answer
}
}
나와 같은 방식으로 푸신 분의 깔끔한 코드를 가져와봤다.
분석을 하면서 공부하고 내 것으로 만들어야겠다.
우선 동점일 경우 알파벳순으로 리턴해주기에 알파벳순으로 charArray에 담아주고 그 크기에 따른 정수 배열도 만들어준다.
그리고 어차피 choices의 숫자를 통해 알파벳들의 숫자 비교를 위한 것이므로 점수에 4를 빼주고 값을 score에 넣어준다.
'CF"일 때 choices가 3이었다면 F를 가져와서 -1을 넣어주면 사실상 C가 1득점한 것과 같은 효과이다.
이후 for문으로 score값들을 step2로 2씩 띄어서 값들을 비교해주고 동점이거나 높으면 우선순위가 높은 알파벳을 리턴해주고 반대는 뒤에 알파벳을 리턴한다.
맵 컬렉션을 좀 더 공부하고 맵을 이용해서 풀어 봐야겠다.
'Code KATA' 카테고리의 다른 글
Programmers 개인정보 수집 유효기간 with Kotlin (0) | 2023.12.27 |
---|---|
Programmers 바탕화면 정리 with Kotlin (0) | 2023.12.22 |
Programmers 햄버거 만들기 with Kotlin (0) | 2023.12.20 |
Programmers 둘만의 암호 with Kotlin (1) | 2023.12.19 |
Programmers 대충 만든 자판 with Kotlin (0) | 2023.12.18 |