[백준] 디지털시계 (1942)(kotlin)
문제 설명
입력 및 출력
» 입력
세 개의 입력이 주어진다. 첫째 줄부터 세 줄에 걸쳐 시작하는 시각과 끝나는 시각이 “hh:mm:ss”의 형태로 주어진다. 시작하는 시각과 끝나는 시각 사이에는 빈 칸이 하나 있어서, 한 줄마다 (빈 칸을 포함하여) 총 17글자가 입력으로 주어진다. 시작하는 시각과 끝나는 시각은 항상 다르다.
» 출력
첫째 줄부터 세 개의 줄에 걸쳐 입력된 구간에 포함되는 시계 정수들 중, 3의 배수인 것의 개수를 출력한다. 입력된 순서대로 각 줄에 한 개씩 차례로 출력하면 된다.
예제 입출력
입력 | 출력 |
---|---|
00:59:58 01:01:24 22:47:03 01:03:24 00:00:09 00:03:37 |
29 2727 70 |
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
repeat(3) {
val t = readLine().split(" ")
val st = t[0].split(":").map { it.toInt() }.toMutableList()
val et = t[1].split(":").map { it.toInt() }.toMutableList()
var sti = timeCounter(st, false)
var eti = timeCounter(et, false)
var count = 0
while (sti != eti) {
if (sti % 3 == 0) {
count++
}
sti = timeCounter(st, true)
}
count += if (eti % 3 == 0) 1 else 0
println(count)
}
}
fun timeCounter(tArr: MutableList<Int>, convert: Boolean): Int {
if (convert) {
tArr[2] += 1
if (tArr[2] == 60) {
tArr[2] = 0
tArr[1] += 1
}
if (tArr[1] == 60) {
tArr[1] = 0
tArr[0] += 1
}
if (tArr[0] == 24) {
tArr[0] = 0
}
}
return tArr.map { time ->
if (time / 10 < 1) "0$time" else "$time"
}.joinToString("").toInt()
}