👀 문제
https://school.programmers.co.kr/learn/courses/30/lessons/150370
👊 도전
1. 설계
- 문제 설명대로 구현
2. 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
fun solution(today: String, terms: Array<String>, privacies: Array<String>): IntArray {
var answer = mutableListOf<Int>()
val hashmap = hashMapOf<String, Int>()
terms.forEach { term ->
val split = term.split(" ")
val day = split[1].toInt() * 28
hashmap.put(split[0], day)
}
val todaySplit = today.split(".")
var todayDay: Long = todaySplit[2].toLong()
todayDay += (todaySplit[1].toInt() - 1) * 28
todayDay += (todaySplit[0].toInt() * (12 * 28))
privacies.forEachIndexed { index, privacy ->
val split = privacy.split(" ")
val endDay = hashmap[split[1]] ?: 0
val date = split[0].split(".")
var day = date[2].toLong()
day += (date[1].toInt() - 1) * 28
day += (date[0].toInt() * (28 * 12))
if (day + endDay <= (todayDay)) {
answer.add(index + 1)
}
}
return answer.toIntArray()
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 날짜를 일자로 변환하여 대소 비교한다
- YYYY.MM.DD 형태로 비교하기 어렵기 때문에 일자로 변환한 후 계산한다.
- YYYY1228 + (MM-1)*28+ DD로 계산하면 된다.