Python with 백준

백준 1408번 (문자열 연결, 숫자 출력 앞에 0 붙이기)

쌍준 2022. 12. 28. 21:32

nh, nm, ns= input().split(':')
sh, sm, ss= input().split(':')

nt= int(nh+nm+ns)  # 문자열을 편하게 더할 수 있다.
st= int(sh+sm+ss)

nh, nm, ns= map(int, (nh, nm, ns))
sh, sm, ss= map(int, (sh, sm, ss))

if nt>st:
    sh=sh+24

rh= sh-nh

if sm<nm:
    rh=rh-1
    sm=sm+60

rm= sm-nm

if ss<ns:
    rm=rm-1
    ss=ss+60

rs= ss-ns

print("%02d:%02d:%02d" % (rh,rm,rs))  # 정수형 앞에 0을 붙여 출력하는 방법

이렇게 하니 예외가 발생하게 되었다.

23:59:59
23:59:58
>> 24:-1:59


이런 방식으로는 알고리즘이 너무 복잡해져 아예 새로 엎어 시 분을 모두 초로 옮기는 알고리즘을 새로 짰다.

 

nh, nm, ns= map(int, input().split(':'))
sh, sm, ss= map(int, input().split(':'))

time=sh*3600+sm*60+ss-(nh*3600+nm*60+ns)

if time<0:
    time=time+24*3600

h= time//3600    # 초로 되어있는 시간을 이런식으로 간단하게 시 분 초로 표현할 수 있다.
m= (time%3600)//60
s= time%60

print("%02d:%02d:%02d" % (h,m,s))