본문 바로가기
백준

[3029] 경고 - python 풀이

by mlice1030 2022. 3. 22.

알고리즘 설계 기법

  • 없음

시, 분, 초 단위로 각각 따져서 시간 차이 계산하면 된다. 단, 60초가 되면 분 단위에 영향을 미치고, 60분이 되면 시 단위에 영향을 미치므로 초, 분, 시 순서로 계산해야 한다.

그리고 문제에서 마음에 안 드는 건 24:00:00 조건.

00:00:00시에서 00:00:00시까지 대기 시간은 24시간이 아니라 그냥 대기를 안 하면 되는 거 아니냐고...

아무튼 입력 두 개가 같은 경우에는 24시간을 기다려야 하므로 그 조건은 따로 따져줬다.

 

A = list(map(int, input().split(':')))
B = list(map(int, input().split(':')))

if A[2] > B[2]:
    S = 60-A[2]+B[2]
    A[1] += 1
else:S = B[2]-A[2]

if A[1] > B[1]:
    M = 60-A[1]+B[1]
    A[0] += 1
else: M = B[1] - A[1]

if A[0] > B[0]:
    H = 24-A[0]+B[0]
else: H = B[0]-A[0]

if A[0] == B[0] and A[1] == B[1] and A[2] == B[2]:
    H = 24
    M = 0
    S = 0

print("%02d:%02d:%02d" % (H, M, S))

문제 풀러가기

 

3029번: 경고

첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간

www.acmicpc.net

 

댓글