ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023 KAKAO BLIND RECRUITMENT - 개인정보 수집 유효기간
    코딩 테스트/Level 1 2023. 1. 5. 21:11
    반응형

    https://school.programmers.co.kr/learn/courses/30/lessons/150370

    파이썬

    짧게 줄인다면.. 

    def solution(today, terms, privacies):
        def sum_date(year, month, day, t_month):
            q, month = divmod(month + t_month, 12)
            if month <= 0:
                month += 12
                year -= 1
            return year + q, month, day
    
        today = tuple(int(each) for each in today.split('.'))
        terms = {k: int(v) for k, v in (term.split() for term in terms)}
        return [index + 1
                for index, (p_date, t_num) in enumerate(privacy.split() for privacy in privacies)
                if today >= sum_date(*(int(each) for each in p_date.split('.')), terms[t_num])]

    읽기 편하게 코드를 작성한다면... 

    def solution(today, terms, privacies):
        def str2date(text):
            return [int(each) for each in text.split('.')]
    
        def str_split(text):
            # yield from (each.split() for each in text)
            return (each.split() for each in text)
    
        def sum_date(date, t_month):
            year, month, day = date
            month += t_month
            q, r = divmod(month, 12)
            year += q
            month = r
            if month <= 0:
                month += 12
                year -= 1
            return [year, month, day]
    
        today = str2date(today)
        terms = {k: int(v) for k, v in str_split(terms)}
        answer = []
        for index, (p_date, t_num) in enumerate(str_split(privacies)):
            if today >= sum_date(str2date(p_date), terms[t_num]):
                answer.append(index + 1)
        return answer

    코틀린

    class Solution {
        fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
            val answer = mutableListOf<Int>()
            val sumDays = { it: List<Int> -> it[0] * 12 * 28 + it[1] * 28 + it[2] }
            val intToday = sumDays(today.split('.').map { it.toInt() })
            val mapTerms = terms
                .map { it.split(' ') }
                .associate { it[0] to it[1].toInt() * 28 }
            for ((index, privacy) in privacies.withIndex()) {
                val temp = privacy.split(' ')
                val privacyDate = sumDays(temp[0].split('.').map { it.toInt() })
                if (intToday >= privacyDate + (mapTerms[temp[1]] ?: 0))
                    answer.add(index + 1)
            }
            return answer.toIntArray()
        }
    }
    class Solution {
    
        fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
            val sumDays = { it: List<Int> -> it[0] * 12 * 28 + it[1] * 28 + it[2] }
            val intToday = sumDays(today.split('.').map { it.toInt() })
            val mapTerms = terms
                .map { it.split(' ') }
                .associate { it[0] to it[1].toInt() * 28 }
            return privacies
                .map { it.split(' ') }
                .withIndex()
                .filter { (_, temp) ->
                    intToday >= sumDays(temp[0].split('.').map { it.toInt() }) + (mapTerms[temp[1]] ?: 0)
                }.map { it.index + 1 }.toIntArray()
        }
    }
    반응형
Designed by Tistory.