본문 바로가기

Algorithm Problems/구현

[백준/Python] 1408번: 24

문제

https://www.acmicpc.net/problem/1408

 

1408번: 24

도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는

www.acmicpc.net


문제 요약

도현이는 모든 사건을 정확하게 24시간이 지난 순간 해결하는 것으로 유명한 특수 요원이다.

 

도현이가 임무를 시작한 시각과 현재 시각이 주어졌을 때, 도현이에게 남은 시간을 출력한다.

 

+ 디지털 시계 형식으로 입력과 출력을 한다.


코드

# 임무 시작 시각 = 임무 종료 시각

# 현재 시간, 임무 시작 시각 입력
currentHour, currentMinute, currentSecond = map(int, input().split(':'))
startHour, startMinute, startSecond = map(int, input().split(':'))

# 남은 시간 (초)
res = 0

# 현재 시간부터 임무 종료 시각까지 얼마나 걸리는지 확인
while True:
    #print(currentHour, currentMinute, currentSecond)
    if currentSecond == 60: currentMinute += 1; currentSecond = 0
    if currentMinute == 60: currentHour += 1; currentMinute = 0
    if currentHour == 24: currentHour =0

    if currentHour ==  startHour and currentMinute == startMinute and currentSecond == startSecond:
        print(f"{res // 3600:02d}:{(res % 3600) // 60:02d}:{(res % 3600) % 60:02d}")
        break

    currentSecond += 1
    res += 1

코드 설명

임무를 시작한 시각에서 24시간이 지나면 임무가 끝나는 시각이다.

ex) 07:52:52에서 24시간이 지나면 07:52:52이다.

 

따라서, 임무를 시작한 시각은 임무가 끝나는 시각과 같다.

 

반복문을 통해 현재 시간과 남은 시간(res)을 1초씩 증가시키며, 현재 시각이 임무 종료 시각이 되면 결과를 형식에 맞게 출력한다.

 

+ 결과 '시' = 남은 시간(초)을 3600으로 나눈 몫+ 결과 '분' = 남은 시간을 3600으로 나눈 나머지('시'로 나눈 나머지)를 60으로 나눈 몫 

+ 결과 '초' = 남은 시간을 3600으로 나눈 나머지('시'로 나눈 나머지)를 60으로 나눈 나머지('분'으로 나머지)

 

+ 현재 '초'가 60일 때, 현재 '분'을 1 증가시키고 현재 '초'를 다시 0으로 갱신한다.

+ 현재 '분'가 60일 때, 현재 '시'을 1 증가시키고 현재 '분'를 다시 0으로 갱신한다.

+ 현재 '시'가 24일 때, 현재 '시'를 다시 0으로 갱신한다.