프로그래머스

[프로그래머스][2023 KAKAO BLIND RECRUITMENT][개인정보 수집 유효기간]

끝까지 처음처럼 2023. 1. 26. 17:02
728x90
class Solution {
    fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
        var answer: IntArray = intArrayOf()
        var termsMap = mutableMapOf<String,Int>()
        terms.forEach{
            termsMap.put(it.split(" ")[0], it.split(" ")[1].toInt()*28)
        }
        var todayCheck = 0
        todayCheck += today.split(".")[0].toInt()*12*28
        todayCheck += today.split(".")[1].toInt()*28
        todayCheck += today.split(".")[2].toInt()
        for(i in 0 .. privacies.size-1){
            var day = 0
            day += privacies[i].split(".")[0].toInt()*12*28
            day += privacies[i].split(".")[1].toInt()*28
            day += privacies[i].split(".")[2].split(" ")[0].toInt()
            
            var check = privacies[i].split(".")[2].split(" ")[1]
            if(todayCheck - day >= termsMap.get(check)!!) answer += i+1
        }
        return answer
    }
}

해당문제는 지문을 잘 보면 한달을 모두 28일로 일괄계산하기에 주어진 자료들을 적절히 split() 함수를 사용하여 분리 시키면 금방 풀 수 있는 문제였습니다. kotlin 및 코딩테스트를 공부한지 얼마 지나지 않았을때 경험삼아 봤었는데 해당 문제만 통과했던 슬픈기억이 떠오르는 문제였습니다ㅠㅜ

상기  코드의 실행결과 입니다.

테스트 1 통과 (16.38ms, 63.5MB)
테스트 2 통과 (23.04ms, 64.2MB)
테스트 3 통과 (17.53ms, 64.4MB)
테스트 4 통과 (19.15ms, 63.5MB)
테스트 5 통과 (25.44ms, 66.5MB)
테스트 6 통과 (19.83ms, 63.2MB)
테스트 7 통과 (23.92ms, 63MB)
테스트 8 통과 (20.71ms, 63.7MB)
테스트 9 통과 (23.38ms, 63.9MB)
테스트 10 통과 (23.77ms, 63.9MB)
테스트 11 통과 (21.44ms, 64.2MB)
테스트 12 통과 (26.67ms, 64.5MB)
테스트 13 통과 (17.88ms, 63.7MB)
테스트 14 통과 (17.41ms, 64.3MB)
테스트 15 통과 (17.49ms, 64MB)
테스트 16 통과 (28.31ms, 63.9MB)
테스트 17 통과 (17.61ms, 63.8MB)
테스트 18 통과 (17.33ms, 63.7MB)
테스트 19 통과 (25.39ms, 63.7MB)
테스트 20 통과 (17.36ms, 63.2MB)