https://school.programmers.co.kr/learn/courses/30/lessons/150370
class Solution {
fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
val answer = mutableListOf<Int>()
val term = mutableMapOf<String, Int>()
val todayInt = today.replace(".", "").toInt()
terms.map {
val (type, date) = it.split(" ")
term[type] = date.toInt()
}
privacies.mapIndexed { i, it ->
val (date, type) = it.split(" ")
var year = term[type]!! / 12
if (year < 1)
year = 0
val month = term[type]!! % 12
val expiredDate = (date.replace(".", "").toInt() + year * 10000 + month * 100).toString()
var temp = expiredDate.toInt()
if (expiredDate[4].toString().toInt() * 10 + expiredDate[5].toString().toInt() > 12) {
temp -= 1200
temp += 10000
}
if (temp <= todayInt) {
answer.add(i + 1)
}
}
return answer.toIntArray()
}
}
today 날짜를 점을 뺀 Int형식으로 날짜를 저장한다.
term 에 terms의 타입과 개월 수를 Map 형식으로 { A=6, B=12, C=3 } 이런식으로 저장한다.
이 후 유효기간의 소멸날짜를 구하기 위해 연수와 개월 수를 구하여 expiredDate에 저장한다.
월 수가 12를 초과했을 경우에 올림 계산을 위해 temp를 통해 연산을 해주고 temp와 오늘 날짜를 비교하여 오늘 날짜가 더 크다면 answer에 담아준다.
'Code KATA' 카테고리의 다른 글
Programmers 공원 산책 with Kotlin (0) | 2023.12.29 |
---|---|
Programmers 달리기 경주 with Kotlin (0) | 2023.12.28 |
Programmers 바탕화면 정리 with Kotlin (0) | 2023.12.22 |
Programmers 성격 유형 검사하기(2022KaKaoTech) with Kotlin (1) | 2023.12.21 |
Programmers 햄버거 만들기 with Kotlin (0) | 2023.12.20 |