티스토리 뷰

화려한 그의 이퀄라이저

사실 그리디 전략자체는 쉽게 떠올릴 수 있는데 구현 한번 꼬이면 디버그가 어려웠던 문제.

 

 

 

22991번: 수요응답형 버스

현대오토에버는 In-Car와 Out-Car 영역 전반의 소프트웨어와 인프라 관련 업무를 수행하는 회사이다. 현재 현대오토에버에서 수요응답형 버스(MOD)를 개발하고 있다. 수요응답형 버스는 승객이 호

www.acmicpc.net

배차 요청이 N개, 버스 배차가 M개가 주어진다. (1 <= N, M <= 200,000)

여기서 배차 요청을 최대한 버스와 1:1로 매칭시켜줘야 한다.

탑승인원이 버스 정원보다 적거나 같아야하고

버스의 도착시간이 최대 대기 가능 시간보다 작거나 같아야하는데 사실 정렬한번 하고 투포인터로 긁어나가면 빠르게 풀 수 있는 문제였다.

 

우선 실수한거 하나, 투포인터 구현을 제대로 안했다. 종종 생각없이 투포인터를 중첩for문으로 구현하곤 했는데 여기서 실수를 범해서 O(NM)의 TLE코드를 만들어 버렸다. (정답은 O(N+M)으로 간단하게 풀린다)

 

그리고 그룹에 너무 연연했다.

풀이는 한 버스에 대하여 받아들일 수 있는 요청을 시간 또는 정원 순으로 나열해서 받을 수 있을 때 까지 받은후에,

정원이 넘치면 다음 버스에 대하여 이 과정을 반복하는 것이다.

그런데 곰곰히 생각해보면 정원이 넘친경우 다음 버스는 이전 버스보다 정원이 크므로 이전 버스에서 받은 요청을 그대로 넘겨받을 수 있었다.

 

그러면 multiset배열이 아니라 그냥 multiset 변수 하나두고 재활용하면 됬었을텐데 삽질을 거하게 한 것 같다.

 

그런 의미에서 앞으로 greedy와 two-pointer를 연습해야겠다.

 

'Algorithms & PS' 카테고리의 다른 글

[20040] Union-find로 그래프 상의 사이클 검출  (0) 2021.11.16
[2668] 숫자고르기  (0) 2021.11.15
선분 교차 판별법  (0) 2021.08.28
[2342] Dance Dance Revolution  (0) 2021.06.13
[1562] 계단수  (0) 2021.06.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday