알고리즘


시간 계산을 할 때 주의할 점은 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))
sebinChu