안녕하세요. 지난 포스팅의 BOJ 2884번 : 알람 시계에서는 복잡한 조건문을 가진 문제를 풀어보았습니다. 오늘은 더욱 범위가 넓어진 시간 문제를 풀어보도록 하겠습니다.
핵심 포인트
- 조건문
- 시계 계산
일단, 문제를 보도록 하죠. 기본적으로 현재 시간을 시(H)와 분(M)으로 주어지고 오븐이 걸리는 시간(T)이 주어집니다. 그리고 요리가 완성되는 시간을 출력해야하죠. 가장 먼저 해볼것은 분을 계산해보도록 하겠습니다. 일단, M + T가 분이 될 것입니다. 그런데, T의 범위는 1,000분이 될 수도 있기 때문에 T를 60분으로 나눈 나머지 M + T % 60을 더해주면 됩니다. 그런데 여기서 M + T % 60 역시 60분을 넘어설수도 있겠죠? 따라서, 다시 60분으로 나눈 나머지를 계산해야합니다. 따라서, 요리가 완성되는 분은 (M + T % 60) % 60이 되겠죠.
다음으로 시를 계산해보도록 하죠. 일단, 현재 시간인 H가 됩니다. 하지만, T의 범위가 여전히 아주 크죠. 따라서, T를 60분으로 나눈 몫이 요리가 완성되는 시간이 됩니다. 따라서, H + T // 60을 하면 되려나요? 아니죠. 위에서 계산했던 분 M + T % 60이 또 60분을 넘어설 수도 있기 때문에 이 식을 또 60분으로 나눈 몫을 더해주어야 합니다. 따라서, H + T // 60 + (M + T % 60) // 60이 시간이 되겠죠. 하지만 아쉽게도 한 가지 더 고려해야합니다. 문제에 따르면 23시 59분의 바로 다음 시간은 00시 00분가 되기 때문에 만약, H + T // 60 + (M + T % 60) // 60이 24시간이 넘어가면 24를 빼고 출력을 해주면 됩니다. 이제 코딩을 해보면 아래와 같습니다.
H, M = map(int, input().split())
T = int(input())
if (H + T // 60 + (M + T % 60) // 60) < 24 :
print(H + T // 60 + (M + T % 60) // 60, (M + T % 60) % 60)
else :
print(H + T // 60 + (M + T % 60) // 60 - 24, (M + T % 60) % 60)
참고자료 및 그림출처
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 2739번 : 구구단 (0) | 2022.06.02 |
---|---|
BOJ 2480번 : 주사위 세개 (0) | 2022.06.01 |
BOJ 2884번 : 알람 시계 (0) | 2022.06.01 |
BOJ 14681번 : 사분면 고르기 (0) | 2022.06.01 |
BOJ 2753번 : 윤년 (0) | 2022.05.31 |