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
    }
}

 

포인트

- 답안 패턴에 모듈러 연산(%)을 사용해 코드 간소화

- 반복되는 코드(답 확인)을 메소드로 만들어 코드 간소화

 

느낀점

- 어렵지 않은 문제였지만 코틀린 문법으로 작성하는게 어색해 자바로 먼저 풀고 옮기는 과정에 시간이 더 쓰였다. 코틀린 문법에 익숙해지도록 노력해야겠다.