문제 4479 · 킬로 IV
노선 운행 시간 합치기
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
버스 노선의 운행 자료를 정리하는 담당자가 차량별 운행 기록을 모았다. 같은 노선에 여러 차량이 투입되므로 서로 다른 기록의 운행 시간이 겹칠 수 있다. 담당자는 차량별 운행 시간을 단순히 더하는 대신, 적어도 한 대의 버스가 운행 중이었던 시간의 총길이를 분 단위로 계산하려고 한다. 각 기록에는 출발 날짜, 출발 시각, 도착 시각이 들어 있다. 날짜는 `YYYY-MM-DD`, 시각은 24시간제 `HH:MM` 형식이다. 도착 시각이 출발 시각보다 이르면 도착 날짜는 출발 날짜의 다음 날이다. 도착 시각이 출발 시각보다 늦거나 같으면 도착 날짜는 출발 날짜와 같다. 특히 두 시각이 같으면 운행 시간이 0분인 기록이며, 하루 동안 운행했다는 뜻이 아니다. 각 기록의 운행 시간은 항상 24시간보다 짧다. 운행 구간은 출발 순간을 포함하고 도착 순간을 포함하지 않는 것으로 해석한다. 예를 들어 어느 기록이 08:10에 출발하여 08:13에 도착했다면 그 기록은 3분을 차지한다. 다른 기록이 같은 날짜 08:12에 출발하여 08:15에 도착했다면 두 기록이 함께 차지하는 시간은 5분이다. 겹치는 시간을 두 번 세지 않기 때문이다. 한 기록이 끝나는 순간 다른 기록이 시작하면 두 구간 사이에 빈 시간은 없다. 기록은 날짜순이나 시각순으로 정렬되어 있지 않다. 완전히 같은 기록이 여러 번 등장할 수도 있으며, 이 경우에도 실제로 운행 중이었던 시간만 한 번 센다. 운행 기록이 없는 시간은 결과에 포함하지 않는다. 기록이 서로 다른 날짜에 있더라도 자정을 넘어 이어지거나 겹칠 수 있으므로 날짜와 시각을 함께 비교해야 한다. 날짜는 그레고리력을 따른다. 4의 배수인 해는 윤년이지만, 100의 배수인 해는 400의 배수일 때에만 윤년이다. 모든 시각은 같은 기준을 사용하며 시간대 변경이나 시각 보정은 없다. 주어진 모든 기록을 합쳤을 때 적어도 한 대의 버스가 운행 중이었던 총시간을 구해야 한다. 모든 기록의 운행 시간이 0분이면 결과도 0이다.
입력
첫째 줄에 기록 수 N이 주어진다. 다음 N개 줄에 출발 날짜 D, 출발 시각 S, 도착 시각 E가 공백으로 구분되어 주어진다. N은 정수이며 1 ≤ N ≤ 10,000이다. D는 2000-01-01 이상 2099-12-31 이하의 실제 존재하는 날짜이다. S와 E의 시는 00 이상 23 이하, 분은 00 이상 59 이하이다. 날짜와 시각의 각 구성 요소는 지정된 자릿수를 맞추어 주어진다. 2099-12-31에 출발한 기록은 규칙에 따라 2100-01-01에 도착할 수 있다.
출력
적어도 한 대의 버스가 운행 중이었던 총시간을 분 단위 정수로 한 줄에 출력한다. 겹치는 시간은 한 번만 센다.
예제 입력 1
3 2028-05-12 08:10 08:40 2028-05-12 08:25 09:00 2028-05-12 10:00 10:15
예제 출력 1
65
예제 입력 2
3 2028-02-28 23:50 00:20 2028-02-29 00:10 00:40 2028-02-29 00:40 01:00
예제 출력 2
70
예제 입력 3
2 2099-12-31 12:00 12:00 2000-01-01 00:00 00:00
예제 출력 3
0
힌트 펼치기
- 날짜와 시각을 하나의 분 단위 정수로 바꾸면 구간을 비교하기 쉽다.
- 출발 시점으로 정렬한 뒤 서로 겹치거나 맞닿는 구간을 합친다.
알고리즘 분류
날짜시간정렬구간 병합풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |