[백준] 경고 (3029)(kotlin)
문제 설명
입력 및 출력
» 입력
- 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간이 위와 같은 형식으로 주어진다.
» 출력
첫째 줄에 정인이가 기다려야 하는 시간을 입력과 같은 형식으로 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
20:00:00 04:00:00 |
08:00:00 |
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
import java.time.Duration
import java.time.LocalDateTime
import kotlin.math.absoluteValue
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
var current = readLine()
var target = readLine()
var later: LocalDateTime
var earlier: LocalDateTime
if (current < target) {
later = current.split(":").map { it.toInt() }.let {
LocalDateTime.of(2000, 1, 1, it[0].toInt(), it[1].toInt(), it[2].toInt())
}
earlier = target.split(":").map { it.toInt() }.let {
LocalDateTime.of(2000, 1, 1, it[0].toInt(), it[1].toInt(), it[2].toInt())
}
} else {
later = target.split(":").map { it.toInt() }.let {
LocalDateTime.of(2000, 1, 2, it[0].toInt(), it[1].toInt(), it[2].toInt())
}
earlier = current.split(":").map { it.toInt() }.let {
LocalDateTime.of(2000, 1, 1, it[0].toInt(), it[1].toInt(), it[2].toInt())
}
}
val duration = Duration.between(later, earlier).seconds.absoluteValue
println(
"%02d:%02d:%02d"
.format(
duration / 3600,
(duration % 3600) / 60,
duration % 60
)
)
}