단순한 시간 계산 문제인데, 분이 시간으로 넘어갈 때, 시간이 24시를 넘어갈 때 자릿수가 올림 되는 걸 두 번 고려해줘야 한다.
if __name__=='__main__':
hour, minute = list(map(int,input().split()))
time = int(input())
spent_hour = time//60
spent_minute = time%60
ans =[(hour+spent_hour+(minute+spent_minute)//60)%24, (minute+spent_minute)%60]
for i in range(2):
print(ans[i], end =' ')
1. 원래의 시간 셋팅 (hour, minute)
2. 걸리는 시간을 시간, 분으로 나타낸다(spent_hour, spent_minute)
3. 각자의 자리에서 더하고, 분은 60이 넘어가면 자리를 올려준다( //60, %60)
4. 24시를 넘어갔을 경우, 시간을 리셋한다. (%24)
--- 시행 착오----
걸리는 시간을 분으로 주니, 바로 60 mod 하려고 하였으나, 틀림.
이유: 분을 계산하는 데는 문제가 없지만, 주어진 시간(분) 중 몇 분을 minute에 배분한 채로 시간으로 자리 올림 해야하는 지를 고려하지 않음.
## 반례: 현재 2시 15분이고, time =45분일 경우,
## 분이 60분이 되면서 3시로 자리 올림이 되어야 하지만, 45//60 = 0 이므로, 시간으로 올림이 안됨.
if __name__=='__main__':
hour, minute = list(map(int,input().split()))
time = int(input())
ans =[(hour+time//60)%24, (minute+time)%60]
for i in range(2):
print(ans[i], end =' ')
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 2588 : 곱셈 (0) | 2021.02.20 |
---|---|
백준 2530 : 인공지능 시계 (0) | 2021.02.20 |
백준 2420 : 사파리월드 (0) | 2021.02.20 |
백준 10430 : 나머지 (0) | 2021.02.19 |
백준 8393: 합 (0) | 2021.02.19 |