세상을 더 좋게

[백준] 2884 '알람 시계' 파이썬(Python), 코틀린(Kotlin) 본문

Algorithm

[백준] 2884 '알람 시계' 파이썬(Python), 코틀린(Kotlin)

나는SOU 2022. 3. 17. 21:43

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

 

파이썬

시와 분을 입력 받은 뒤, 조건에 맞도록 식을 구성하였다. 우선 45분을 빼야하기 때문에 고려할 수 있는건

- 먼저 해당 시간의 분이 '45분보다 긴가 짧은가' 이다. 길면 그냥 -45만 하면 되지만 짧다면 시간을 바꿔야 하기 때문에 조건이 달라진다.

- 그리고 만약 45분보다 짧다면 또 고려해야 하는게 하루가 24시간이므로 '0시 일 때'도 고려해야 한다. 0시가 아니라면 한 시간만 줄면 되지만, 0시라면 시간은 23시가 되어야 하기 때문이다. 

h, m = map(int, input().split())

if m < 45:
    if h == 0:
        h = 23
        m += 60
    else:
        h -= 1
        m += 60
print(h, m-45)

 

코틀린

파이썬과 흐름은 똑같다. 시와 분을 입력 받고 if문을 이용해 위의 파이썬과 같은 조건으로 구현하였다. when을 쓸까도 생각했었지만, 조건이 하나 들어가고 또 들어가는 형태라 if문이 외부 사람이 보기에 흐름이 더 좋아보였다.

println 같은 경우는 파이썬과 다르게 인자가 하나만 들어가야 하기에 "" 사이에 ${}를 활용하여 출력 조건에 맞춰주었다.

import java.util.*

fun main() = with(Scanner(System.`in`)) {
    var (h, m) = Pair(nextInt(), nextInt())
    
    if (m < 45) {
        if (h == 0) {
            h = 23
            m += 60
        } else {
            h -= 1
            m += 60
        }
    }
    
    println("${h} ${m-45}")
}