문제
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으로 갱신한다.
'Algorithm Problems > 구현' 카테고리의 다른 글
[백준/Python] 17300번: 패턴 (1) | 2024.01.06 |
---|---|
[백준/Python] 23349번: 졸업 사진 (0) | 2024.01.01 |
[백준/Python] 1969번: DNA (1) | 2023.11.20 |
[백준/python] 2852번: NBA 농구 (2) | 2023.08.01 |
[백준/python] 2999번: 비밀 이메일 (2) | 2023.07.24 |