세상을 더 좋게

[백준] 2525 '오븐 시계' 파이썬(Python), 코틀린(Kotlin) 본문

Algorithm

[백준] 2525 '오븐 시계' 파이썬(Python), 코틀린(Kotlin)

나는SOU 2022. 3. 17. 23:50

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

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 

파이썬

이 문제는 조건에 조건을 더하는 문제다. 

첫번째로 분과 요리시간을 더했을 때 60분을 넘어갈 경우이다. 이때는 h에 특정한 시간을 더해줘야 하기 때문에 해당 조건을 해결해야만 한다.

두번째로는 '현재시간과 추가되어야 하는 시간의 합이 24시간을 넘어가느냐'의 문제다. 넘어가게 되면 24로 나누어 그 나머지만큼의 숫자가 요리가 완성되는 최종적인 h가 되기 때문이다.

 

첫번째의 조건을 달고 또 두번째 조건을 사용하여 최종적인 h와 m을 이제 출력시키기만 하면 된다.

 

다소 난잡할 수 있지만 코드를 읽으면 논리의 흐름을 그대로 따라갈 수 있기 때문에 좋다고 생각한다.

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

if m + cookingTime >= 60:
    plusHour = (m + cookingTime) // 60
    m = (m + cookingTime) % 60
    if h + plusHour >= 24:
        h = (h + plusHour) % 24
    else:
        h += plusHour
else:
    m += cookingTime
    
print(h, m)

 

코틀린

위의 파이썬과 흐름은 똑같다. 다만 / 를 사용하는 데에 있어 다르다. 코틀린은 기본적으로 / 를 사용한 결과 값에 소수점이 반영되지 않는다. 따라서 위의 파이썬처럼 //와 같은 별도의 연산자를 사용할 필요가 없다. 출력값에는 마찬가지로 인자를 하나만 가지기 때문에 "" 안에 ${}를 이용하여 출력하였다.

import java.util.*

fun main() = with(Scanner(System.`in`)) {
    var (h, m) = Pair(nextInt(), nextInt())
    val cookingTime = nextInt()
    
    if (m + cookingTime >= 60) {
        val plusHour = (m + cookingTime) / 60
        m = (m + cookingTime) % 60
        if (h + plusHour >= 24) {
            h = (h + plusHour) % 24
        } else {
            h += plusHour
        }
    } else {
        m += cookingTime
    }
    
    println("${h} ${m}")
}