3029 경고 파이썬
현재 시간과 정인이가 나트륨을 던질 시간이 주어졌을 때, 정인이가 얼마나 숨어있어야 하는지 구하는 프로그램을 작성하시오. (정인이는 적어도 1초를 기다리며, 많아야 24시간을 기다린다.)
입력
첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다.
둘째 줄에는 나트륨을 던질 시간이 위와 같은 형식으로 주어진다.
출력
첫째 줄에 정인이가 기다려야 하는 시간을 입력과 같은 형식으로 출력한다.
처음 생각한 풀이는 문자열을 정규화 한 후 단순히 빼는 풀이였다.
이 풀이는 시,분,초마다 최대값이 다르기 때문에 불가능한 풀이다.
2번째로 생각한 방법은 문자열로 입력받아 각각 계산하는 방식이었다.
시,분,초를 다르게 계산한다.
다만 여기서 주의해야 할게 음수가 되면 각각 60이나 24를 더해주되,
분과 초는 그 위단계수에 -1을 추가적으로 해줘야 한다는 사실이다.
마지막으로 조건이 굉장히 중요했는데, 1~24시간까지 기다릴 수 있으므로
0시0분0초에서 0시0분0초까지면 24시간이 되야한다.
+ format()으로 숫자앞에 0을 채울 수 있다.
+print쓸 때 숫자와 문자 같이 쓰면 공백이 중간에 들어가므로 sep=를 이용해서 풀이.
#두 시간 입력
first=input()
last=input()
h,m,s=0,0,0
s=int(last[6:])-int(first[6:])
m = int(last[3:5]) - int(first[3:5])
h=int(last[0:2])-int(first[0:2])
if s<0:
s+=60
m-=1
if m < 0:
m += 60
h -= 1
if h<0: h+=24
if h==m==s==0:
h=24
h=format(h,'02')
m=format(m,'02')
s=format(s,'02')
print(h,m,s,sep=':')