KAKAO BLIND 공채의 문제였다.
저번 자물쇠와 열쇠보다는 나았던 것 같다.
내가 생각한 풀이의 Key는 다음과 같다.
- 주어진 n(버스 수)과 t(간격)를 이용해 버스 시간표를 만든다.
- 이 때, String과 Int의 Pair로 만들며, Int에는 남은 자리 수가 들어간다.
- 그 버스 시간표를 순회하며 사람들을 차례대로 태운다.
- 남는 자리 시간 확인은 버스의 마지막 시간대만 하면 된다!
- 왜? 가장 늦게 타는 시간을 계산하는 것이기 때문에.
- 마지막 시간대에 자리가 있다면? 그냥 그 시간에 탑승.
- 마지막 시간대에 자리가 없다면? 제일 늦게 타는 사람 - 1분에 탄다!
생각해 볼 점
- 마지막 시간대만 확인을 하면 되는데, 굳이 Queue를 다 돌아야 할까?
- 분명 마지막 시간대의 자리만 확인하도록 최적화가 가능할 것이다.
- 버스 시간표가 굳이 필요할까?
- 버스 시간을 매번 계산해서 사용하면 공간이 절약될 것이다.