Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코딩테스트
- 삼성 #코테 #2020상반기 #c++
- 카카오인턴
- Union-find
- Algorithm
- 소감
- 코테
- 투포인터
- BFS
- LIS #Algorithm #요소추적
- 스마일게이트
- 중반부
- 보석쇼핑
- 백준
- 카카오
- 1편
- 서버개발캠프
- BaekJoon
- c++
- 유니온파인드
- 알고리즘
- Smilegate
- 식단
- IBK기업은행 #기업은행 #디지털 #직무 #정리
Archives
- Today
- Total
짱아의 개발 기록장
백준 1202번. 보석 도둑(c++) / Greedy 본문
반응형
이러한 유형은 매우 자주 접했던 그리디 유형이다.
보석의 정보와 가방의 정보를 각각 저장하고
보석은 무게를 기준으로 정렬, 가방도 정렬한다.
그리고 가방을 기준으로 가장 높은 가치를 가지고 있는 보석을 담는다. -> 우선순위큐 사용
코드 첨부
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
// 보석 도둑
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n, k, m, v;
pair<int, int> jewelry[300001];
int bag[300001] = {0, };
priority_queue<int> pq;
long long final = 0;
int main()
{
cin>>n>>k;
for(int i=0; i<n; i++){
cin>>jewelry[i].first>>jewelry[i].second;
}
for(int i=0; i<k; i++){
cin>>bag[i];
}
sort(jewelry, jewelry+n);
sort(bag, bag+k);
int idx = 0;
// 가방을 기준으로(무게)
for(int i=0; i<k; i++){
while(idx<n && jewelry[idx].first<=bag[i]){
pq.push(jewelry[idx++].second);
}
if(!pq.empty()){
final += pq.top(); // root에 있는 값을 더해준다.
pq.pop();
}
}
cout<<final<<"\n";
return 0;
}
|
cs |
문제 첨부
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 10870번. 피보나치 수 5(c++) / dp (0) | 2020.08.24 |
---|---|
백준 16946번. 벽 부수고 이동하기 4(c++) / bfs 응용 (0) | 2020.08.24 |
백준 9012번. 괄호(c++) / 스택 (0) | 2020.08.22 |
백준 2636번. 치즈(c++) / 시뮬 (0) | 2020.08.22 |
백준 1411번. 비슷한 단어(c++) / 문자열 처리 (0) | 2020.08.10 |
Comments