알고리즘/백준
[백준] 2884번 : 알람 시계 - 코틀린(kotlin)
Junuuu
2022. 10. 30. 00:01
반응형
https://www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
문제 해석
H, M을 공백으로 구분하여 입력받고 이 시간에서 45분을 뺀 시간을 출력해야 합니다.
문제 풀이 전 설계
시간에 대한 음수관리를 잘해주기만 하면 될 것 같습니다.
코드
fun main() {
val input = readLine()!!
val splitInput = input.split(" ")
val hour = splitInput[0].toInt()
val minutes = splitInput[1].toInt()
printMinus45Minutes(hour,minutes)
}
fun printMinus45Minutes(hour : Int, minutes : Int) {
var minusMinutes = minutes - 45
var hourMinusFlag = false
if (minusMinutes < 0) {
minusMinutes += 60
hourMinusFlag = true
}
var minusHour = hour
if (hourMinusFlag) {
minusHour = hour - 1
}
if (minusHour < 0) {
minusHour = 23
}
println("$minusHour $minusMinutes")
}
우선 생각나는 대로 구현해서 맞긴 했는데 flag라는 것이 들어가서 리팩터링을 하고 싶습니다.
다른 분들의 코드에서 배운 점
fun main() {
var (h, m) = readln().split(' ').map { it.toInt() }
m -= 45
if (m < 0) {
m += 60
h -= 1
if (h < 0) h = 23
}
print("$h $m")
}
코틀린의 구조 분해 선언을 잘 활용한 예시 같습니다.