https://www.acmicpc.net/problem/2525
Problem
훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.
Input
시, 분
소요시간
Output
오븐구이가 종료되는 시간
Code
H, M = map(int, input().split())
running_time = int(input())
if M + running_time >= 60:
H += (M + running_time) // 60
M = (M + running_time) % 60
if H >= 24:
H -= 24
print(H, M)
else:
print(H, M + running_time)
Code review
비슷한 문제로 <백준 2884 : 알람시계> 문제가 있다. 그 문제는 시간을 분으로 바꾼 다음에 수학적 계산하는 방식으로 접근했다.
그러나, 이 문제는 수학 계산으로는 접근을 잘 못하겠어서 M에 바로 running_time(소요시간)을 더하는 방식으로 풀었다.
- M에 소요시간을 더했을 때, 60분 미만이면 그대로 더한 값을 출력하면 되지만
60분 이상이면, 60분으로 나눠서 몫은 H(시)에 더해주고, 나머지는 분으로 M의 값으로 넣어주면 된다.- 만약에 소요시간을 더한 H값이 24가 넘어가면 -24을 해주면 된다.
Takeaway
시는 0~23, 분은 0~59라는 범위 안에서 계산이 되는 시간만이 가진 고유의
수의 체계를 다룰 수 있어서 흥미로웠다.