https://www.acmicpc.net/problem/1092
1092번: 배
첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보
www.acmicpc.net
[난이도] Gold5
[유형] Greedy
[풀이]
크레인의 용량과 박스의 크기를 내림차순을 해준 뒤
1번의 사이클에서 가장 들 수 있는 무게가 큰 크레인부터 가장 큰 박스를 매칭시켜주면 된다.
만약 박스가 선택되었으면 erase 연산으로 vector에서 지워주면서 반복한다.
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int N,M;
vector<int> a,b;
bool cmp(int a,int b){
return a>b;
}
int main(){
scanf("%d",&N);
a.resize(N);
for(int i=0;i<N;i++) scanf("%d",&a[i]);
scanf("%d",&M);
b.resize(M);
for(int i=0;i<M;i++) scanf("%d",&b[i]);
sort(a.begin(),a.end(),cmp);
sort(b.begin(),b.end(),cmp);
if(a[0]<b[0]) {
puts("-1");
return 0;
}
int ans =0;
while(b.size()!=0){
for(int i=0;i<a.size();i++){
for(int j=0;j<b.size();j++){
if(a[i]>=b[j]){
b.erase(b.begin()+j);
break;
}
}
}
ans++;
}
printf("%d",ans);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold5/1092.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 1963 : 소수 경로 (C++) (0) | 2021.03.25 |
---|---|
[BOJ/백준][Gold5] 2493 : 탑 (C++) (0) | 2021.03.25 |
[BOJ/백준][Gold5] 17144 : 미세먼지 안녕! (C++) (0) | 2021.03.25 |
[BOJ/백준][Gold2] 10423 : 전기가 부족해 (C++) (0) | 2021.03.25 |
[BOJ/백준][Gold2] 1670 : 정상 회담 2 (C++) (0) | 2021.03.15 |