반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
두 시각의 차이를 구하는 문제입니다.
2022.02.26 - [Algorithm] - [구현/수학] 백준 18312 시각 - Python
위 문제와 비슷합니다. 다만 이 문제는 하루를 넘어갈 수 있습니다. 예시 입력 3과 같이, 23시에 시작해서 다음날 1시까지의 시차를 구해야할 수도 있습니다.
3. 코드
start = list(map(int, input().split(':')))
end = list(map(int, input().split(':')))
res = 0 #두 시각의 차
#초 차이
if start[2] <= end[2]:
res += end[2] - start[2]
else:
end[1] -= 1
res += end[2] - start[2] + 60
#분 차이
if start[1] <= end[1]:
res += (end[1] - start[1])*60
else:
end[0] -= 1
res += (end[1] - start[1] + 60)*60
#시 차이
if start[0] <= end[0]:
res += (end[0] - start[0])*3600
else:
end[0] += 24
res += (end[0] - start[0])*3600
print(res)
정말 방법론적으로 풀면 위와 같습니다. 초등학교 때 배우는 시간계산법이죠. 초부터 시작해서 부족하면 윗자리에서 빌려오고....
sh, sm, ss = map(int, input().split(':'))
eh, em, es = map(int, input().split(':'))
res = (eh-sh)*3600 + (em-sm)*60 + (es-ss)
if res < 0:
res += 86400 #하루 더하기
print(res)
차라리 전체 시간을 '초'로 환산해서 계산하면 더 쉽습니다. 두 시각의 차이를 구한다음, 음수라면 다음 날로 넘어간 경우입니다. 따라서 하루를 더해줍니다. 86400초는 60 * 60 * 24로 하루의 초 시간입니다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 플로이드-와샬, 모든 쌍의 최적경로 구하기 (0) | 2022.02.28 |
---|---|
[그리디/수학] 백준 10610번 30 - Python (0) | 2022.02.28 |
[구현/수학] 백준 15726 이칙연산 - Python (0) | 2022.02.27 |
[구현/수학] 백준 16431 베시와 데이지 - Python (0) | 2022.02.27 |
[구현/수학] 백준 16428 A/B - 3 - Python (0) | 2022.02.27 |
댓글