알고리즘
시간 계산을 할 때 주의할 점은 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))
'PS > BOJ&Programmers' 카테고리의 다른 글
[백준/1021] 회전하는 큐 | python deque | dequed의 rotate() (0) | 2023.02.12 |
---|---|
[백준/10819] 차이를 최대로 | 모든 순서를 고려한 배열.. permutation | 리스트 갱신법이 항상 효율적일까? (2) | 2023.01.31 |
[백준/15656] N과 M(7) (0) | 2023.01.29 |
[백준/11383] 뚊 | 2차원 이미지 | 행렬 한줄씩 걷어내기(?) (0) | 2023.01.28 |
[백준/1942] 디지털시계 | 1초씩 증가 => while t += 1 (0) | 2023.01.27 |