티스토리 뷰
https://www.acmicpc.net/problem/1202
1202번: 보석 도둑
첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci
www.acmicpc.net
방법을 알면 정말 쉽고 모르면 정말 모르겠는 그리디 & 우선순위큐 문제 ..
방법을 알면 정말 단순하다.
보석은 {무게, 가격} 으로 저장해 무게 기준 오름차순 정렬한다.
가방도 무게기준 오름차순 정렬한다.
이런 문제는 어떤걸 기준으로 탐색하는지가 정말 중요한데 여기서는 가방을 기준으로 탐색을 한다.
1. 현재 가방에 넣을수 있는 보석들을 모두 우선순위큐 (max heap) 에 넣는다.
2. 우선순위큐가 기본 max heap이므로 top에 가장 가격이 높은 보석이 있을 것이다.
3. 해당 보석을 선택하고 pop 한다.
위를 모든 가방에 대하여 수행한다.
물론 우선순위큐가 비었을때 같은 경우도 처리해줘야 한다. (보석보다 가방이 많을때 같은 경우)
'PS' 카테고리의 다른 글
백준 14225. 부분수열의 합 (0) | 2023.01.22 |
---|---|
백준 2042. 구간 합 구하기 (0) | 2023.01.22 |
백준 1926. 그림 (0) | 2023.01.21 |
백준 17299. 오등큰수 (0) | 2023.01.21 |
백준 1713. 후보 추천하기 (0) | 2023.01.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Kruskal
- Spring
- floyd warshall
- back tracking
- permutation
- Dijkstra
- binary search
- priority queue
- db
- Tree
- CSS
- greedy
- C
- DP
- 재귀
- recursion
- BFS
- Python
- C++
- graph
- 자료구조
- Implementation
- dfs
- 이분탐색
- MVC
- 조합
- Unity
- Stack
- Brute Force
- two pointer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함