TLI/코드카타
2024.05.20 TIL 코트카타 57번(모의고사)
jaeseonyoo
2024. 5. 20. 17:37
class Solution {
fun solution(answers: IntArray): IntArray {
var points = IntArray(3){0}
var patterns1: IntArray = intArrayOf(1,2,3,4,5)
var patterns2: IntArray = intArrayOf(2,1,2,3,2,4,2,5)
var patterns3: IntArray = intArrayOf(3,3,1,1,2,2,4,4,5,5)
for(numQuestion in 1..answers.size) {
if(isCorrectAnswer(answers, patterns1, numQuestion))
points[0]++
if(isCorrectAnswer(answers, patterns2, numQuestion))
points[1]++
if(isCorrectAnswer(answers, patterns3, numQuestion))
points[2]++
}
var maxPoint = Integer.MIN_VALUE
for(pointsIndex in 0..points.size-1) {
maxPoint = Math.max(maxPoint, points[pointsIndex])
}
var numMaxPoints = 0
for(pointsIndex in 0..points.size-1) {
if(points[pointsIndex] == maxPoint)
numMaxPoints++;
}
var answer = IntArray(numMaxPoints)
var answerIndex = 0
for(pointsIndex in 0..points.size-1) {
if(points[pointsIndex] == maxPoint)
answer[answerIndex++] = pointsIndex + 1
}
for(answerIndex in 0..answer.size-1) {
print(answer[answerIndex])
}
return answer
}
fun isCorrectAnswer(answers: IntArray, patterns: IntArray, numQuestion: Int): Boolean {
var patternIndex = ((numQuestion-1) % patterns.size)
if(answers[numQuestion - 1] == patterns[patternIndex])
return true
return false
}
}
포인트
- 답안 패턴에 모듈러 연산(%)을 사용해 코드 간소화
- 반복되는 코드(답 확인)을 메소드로 만들어 코드 간소화
느낀점
- 어렵지 않은 문제였지만 코틀린 문법으로 작성하는게 어색해 자바로 먼저 풀고 옮기는 과정에 시간이 더 쓰였다. 코틀린 문법에 익숙해지도록 노력해야겠다.