티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/17678
코딩테스트 연습 - [1차] 셔틀버스
10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00"
programmers.co.kr
먼저 계산하기 쉽도록 "hh:mm" 로 주어진 시간을 분 단위로 바꿔준다. ("09:00" = 540)
분단위로 바뀐 시간들을 각각 사람들이 도착하는 시간을 담을 deque와 버스도착 시간을 담을 deque에 나눠 담고 오름차순 정렬한다.
(벡터에 담아서 내림차순으로 정렬해도 되긴했는데 값들의 범위가 크지않아 시간도 널널해서 deque에 담았다)
도착하는 버스와 줄서 있는 사람들의 시간을 비교해, 사람이 버스시간보다 작거나 같으면 탈수있므로 사람을 pop한다.
이 과정을 마지막 버스때까지 반복하고,
마지막 버스는 버스는 버스에 내가 탈 한자리만 남겨놓고 모두 태워보낸다.
여기까지 왔을때 사람을 담은 deque가 비어있다면 사람이 줄 서 있는 사람들이 다 타고도 자리가 남아있는 것이므로 마지막버스 시간에 내가 타면 된다.
그렇지 않다고 줄 맨앞에 서 있는사람의 시간이마지막 버스 시간보다 크다면 deque에 있는 사람들은 마지막 버스도 못타는 사람들이므로
마찬가지로 마지막 버스 시간에 내가 타면되고
줄에 남아있는 사람들이 마지막 버스 시간보다 작다면 버스에 탈수 있는 사람들 이므로 줄 맨앞에 있는 사람보다 내가 1분 먼저 오면 된다.
2022.02.10
다시 풀었는데 자꾸 다시 틀렸다.
뭐가 문젠가 결국 찾았는데 마지막 버스전 버스까지 크루들을 태워서 보내는 과정에서
버스에 태우고 버스 시간이 담겨있는 벡터에서 해당 값을 pop 했는데, 반복문이 배열.size()-1까지로 되어있어서 벡터의 크기가 반복문 안에서 바뀌어 버렸다.
이런 사소한 실수 찾는데 엄청 오래 걸림..
'PS' 카테고리의 다른 글
백준 11723. 집합 (0) | 2021.12.26 |
---|---|
프로그래머스. 가장 먼 노드 (0) | 2021.12.23 |
백준 2110. 공유기 설치 (0) | 2021.12.23 |
백준 1654. 랜선 자르기 (0) | 2021.12.22 |
백준 2805. 나무 자르기 (0) | 2021.12.22 |
- Total
- Today
- Yesterday
- BFS
- Stack
- Spring
- Tree
- MVC
- 재귀
- Dijkstra
- graph
- back tracking
- Brute Force
- CSS
- 이분탐색
- C++
- Implementation
- 조합
- greedy
- binary search
- floyd warshall
- 자료구조
- permutation
- recursion
- Kruskal
- Unity
- DP
- db
- C
- two pointer
- dfs
- priority queue
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |