https://www.acmicpc.net/problem/3029
📝 알고리즘
시간 계산을 할 때 주의할 점은 24시간이 넘어갔냐 아니냐를 컴퓨터가 판단하도록 지시해야 하는 것이다. 20시와 4시는 숫자만 봤을 때 당연히 20이 더 크지만, 만약 다음날 4시를 뜻하는 거라면 4시가 더 늦은 시간이기 때문에, 이를 컴퓨터가 알아차리도록 해야 한다.
이 문제의 예시에는 두 가지 케이스가 잘 나와있다.
첫 번째 케이스는 다음날 새벽 4시를 뜻하므로 이미 24시간이 넘어간 경우이기 때문에 이를 계산할 때 주의해야 한다.
두 번째 케이스는 같은 날 오후를 뜻하므로 그냥 계산해도 상관없다.
🕰 넘어간 24시간은 어떻게 표현할 수 있을까
만약 24(시) * 60(분) * 60(초) = 86400을 넘어간다면 00:00:00 ~ 23:59:59 로 표현할 수 있도록 t의 값을 86400으로 나눈 나머지로 설정해주면 된다.
💻 최종 코드
h1, m1, s1 = map(int,input().split(':'))
h2, m2, s2 = map(int,input().split(':'))
t1 = h1*3600+m1*60+s1
t2 = h2*3600+m2*60+s2
# 24시간이 넘어간 경우
if t1 > t2 : t = (t2-t1) % 86400
else: t = t2-t1
# 문제 조건 중 정인이는 적어도 1초를 기다리며, 많아야 24시간을 기다린다.
if t == 0 : print('24:00:00')
else:
h = t // 3600
m = t % 3600 // 60
s = t % 3600 % 60
print('%02d:%02d:%02d' % (h,m,s))
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/C++]14561번 회문 (0) | 2023.01.29 |
---|---|
[백준/python] 13410 거꾸로 구구단 (0) | 2023.01.29 |
[백준/python] 2745번 진법 변환 (0) | 2023.01.29 |
[백준/python] 11652 카드 (0) | 2023.01.29 |
[백준/python] 1874번 스택 수열 (0) | 2023.01.29 |