[프로그래머스] 셔틀버스 (Swift)
https://programmers.co.kr/learn/courses/30/lessons/17678
풀이
문제 풀이를 위해 고려해야할 점을 정리해보겠습니다.
1. 모든 셔틀버스가 꽉 찼을때
이 경우에는 탈 자리가 없기 때문에 마지막 버스에 마지막으로 탑승한 사람보다 빨리 도착해야 합니다.
1분만 빨리 도착해도 되기 때문에 마지막 탑승자보다 1분 빠른 시간이 도착 시간이 됩니다.
2. 셔틀버스가 꽉 차지 않았을때
정원이 3명인 버스가 3번 도착한다고 가정하고, 대기 승객이 5명이라고 가정하겠습니다.
이 때 1번 버스에는 3명이 모두 탑승할 것이고, 2번 버스에는 2명이 탑승하여 한 자리가 남아 2번 버스의 도착 시간이 정답이 될 수 있다고 착각할 수 있습니다.
하지만 저희는 무조건 가장 마지막 탑승 시간을 구해야하기 때문에 3번 버스의 도착 시간을 구해야 합니다.
그렇기 때문에 이 경우에는 가장 마지막 버스가 도착하는 시간이 정답이 됩니다.
이 2가지를 고려하면 문제를 해결할 수 있습니다.
일단 도착시간이 정렬되어있지 않기 때문에 저는 도착시간을 모두 정렬해준 후, 분 단위로 환산하여 Queue 에 삽입해주었습니다.
그 다음 버스가 도착할 때마다 탑승이 가능한 승객들을 Queue 에서 꺼냈습니다. 해당 작업을 반복하면 결국 위의 2번 조건을 만족하는지, 만족하지 않는지 확인할 수 있습니다.
위에서 설명한 2번 조건을 그대로 구현한다면 문제를 해결할 수 있습니다.
코드
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 메뉴 리뉴얼 (Swift) (0) | 2022.05.29 |
---|---|
[프로그래머스] 광고 삽입 (Swift) (0) | 2022.05.22 |
[프로그래머스] 가장 먼 노드 (Swift, Java) (0) | 2022.05.21 |
[프로그래머스] 다리를 지나는 트럭 (Swift) (0) | 2022.05.21 |
[프로그래머스] 네트워크 (Swift) (0) | 2022.05.15 |