-
[백준] 2884번 : 알람 시계 - 코틀린(kotlin)알고리즘/백준 2022. 10. 30. 00:01
https://www.acmicpc.net/problem/2884
문제 해석
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") }
코틀린의 구조 분해 선언을 잘 활용한 예시 같습니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2577번 : 숫자의 개수 - 코틀린(Kotlin) (0) 2022.11.01 [백준] 2753번: 윤년 - 코틀린(Kotlin) (0) 2022.10.31 [백준] 2908번 : 상수 - 코틀린(kotlin) (0) 2022.10.29 [백준] 1152 : 단어의 개수 - 코틀린(Kotlin) (0) 2022.10.27 [백준] 3052번 : 나머지 - 코틀린(kotlin) (0) 2022.10.26