{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉누적합〉축제 셔틀버스 혼잡 구간← 이전다음 →
#119 · 누적합어려움차이 배열,좌표 압축,스위프

축제 셔틀버스 혼잡 구간

문제

지역 축제 기간 동안 셔틀버스 한 대가 정류장 1번부터 n번까지 한 방향으로만 운행한다. 정류장 i와 i+1 사이의 길을 구간 i 라고 부른다 (구간은 총 n-1개).

예매 시스템에는 탑승 예약이 trips 배열로 기록되어 있다. trips[k] = [on, off, people]은 people명이 정류장 on에서 타서 정류장 off에서 내린다는 뜻이다. 이 승객들은 구간 on, on+1, ..., off-1을 지나는 동안 버스에 타고 있다. (정류장 off에서 내리는 승객은 구간 off에는 타고 있지 않다.)

버스의 정원은 capacity명이다. 어떤 구간의 탑승 인원이 capacity를 초과 하면 그 구간은 "정원 초과 구간"이다 (정확히 capacity명이면 초과가 아니다).

solution(n, capacity, trips)을 구현하여 다음 세 값을 배열로 반환하라.

  1. maxLoad — 모든 구간 중 최대 탑승 인원 (예약이 없으면 0)
  2. maxStart — 탑승 인원이 maxLoad인 구간 중 가장 번호가 작은 구간 번호
  3. overCount — 정원 초과 구간의 개수

예시

n capacity trips 결과
5 10 [[1,3,4],[2,5,6],[3,4,7]] [13, 3, 1]
4 5 [[1,4,3],[1,4,3]] [6, 1, 3]
7 3 [] [0, 1, 0]

첫 번째 예시: 구간별 탑승 인원은 구간 1부터 차례로 4, 10, 13, 6이다. 최대는 구간 3의 13명이고, 정원(10명)을 초과한 구간은 구간 3 하나뿐이다 (구간 2는 정확히 10명이라 초과가 아니다).

제약 조건

  • 2 ≤ n ≤ 1,000,000,000
  • 1 ≤ capacity ≤ 1,000,000,000
  • 0 ≤ trips.length ≤ 100,000
  • 각 예약 [on, off, people]은 1 ≤ on < off ≤ n, 1 ≤ people ≤ 10,000
  • overCount는 매우 커질 수 있다 (n-1까지 가능) — 개수 자체를 정확히 반환해야 한다.

시간 복잡도 목표: O(m log m) (m = trips.length, n에 비례한 반복 금지)

테스트 케이스

예시 1: 겹치는 세 예약, 정확히 정원인 구간은 초과 아님
입력: n = 5, capacity = 10, trips = [[1,3,4],[2,5,6],[3,4,7]]
출력: [13,3,1]
예시 2: 전 구간 커버 예약 두 건, 모든 구간 초과
입력: n = 4, capacity = 5, trips = [[1,4,3],[1,4,3]]
출력: [6,1,3]
예시 3: 예약 0건
입력: n = 7, capacity = 3, trips = []
출력: [0,1,0]
경계 정류장: 3번에서 내리는 승객과 타는 승객은 겹치지 않음
입력: n = 6, capacity = 5, trips = [[1,3,5],[3,6,5]]
출력: [5,1,0]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.