[알고리즘] 코틀린 스럽게 코딩하기 - 프로그래머스 150370 개인정보 수집 유효기간

조갱·2023년 1월 15일
0

알고리즘

목록 보기
20/22

LocalDate 를 잘 활용해보기.

import java.time.LocalDate
import java.time.format.DateTimeFormatter

class Solution {
    fun solution(today: String, terms: Array<String>, privacies: Array<String>): List<Int> {
        val answer = mutableListOf<Int>()
        val todayYmd = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy.MM.dd"))
        val expireMonthByTerm = terms.associate { it.split(" ").let { (k, v) -> k to v.toLong() } }
        privacies.forEachIndexed { idx, privacy ->
            privacy.split(" ").let { (targetDate, term) ->
                val formattedDate = LocalDate.parse(targetDate, DateTimeFormatter.ofPattern("yyyy.MM.dd"))
                val expireDate = formattedDate.plusMonths(expireMonthByTerm.getValue(term))
                !expireDate.isAfter(todayYmd)
            }.isTrueThen { answer.add(idx + 1) }
        }

        return answer
    }

    fun Boolean.isTrueThen(block : () -> Any) {
        if(this) { block() }  
    } 
}
profile
A fast learner.

0개의 댓글