프로그래머스 lv1 개인정보 수집 유효기간 코틀린 (kotlin) 2023 KAKAO BLIND RECRUITMENT

문제

약관 종류마다 동의한 날짜와 오늘 날짜를 비교하여 파기해야 되는지를 판단하면 된다.

주의사항

풀이

fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
    val answer = mutableListOf<Int>()

    val todayTotal = totalDay(today)
    val map = hashMapOf<String, Int>()

    for (i in terms.indices) {
        val token = terms[i].split(" ")
        map[token[0]] = token[1].toInt()
    }

    for (i in privacies.indices) {
        val token = privacies[i].split(" ")

        val date = token[0]
        val type = token[1]

        val dateTotal = totalDay(date)
        val month = map[type] ?: 0
        val changedDay = month * 28

        if (todayTotal >= (dateTotal + changedDay)) {
            answer.add(i+1)
        }
    }

    return answer.toIntArray()
}

private fun totalDay(todayTotal: String): Int {

    var sum = 0
    val token = todayTotal.split(".")
    val y = token[0]
    val m = token[1]
    val d = token[2]

    sum += y.toInt() * 12 * 28
    sum += (m.toInt() - 1) * 28
    sum += d.toInt()

    return sum
}

문자열을 분리하는 것과 날짜 계산을 총 일자수로 변환만 했다면 이 문제는 쉽게 풀렸을 듯…



Related Posts