https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=581&sw_prbl_sbms_sn=16912
[난이도] level3
[유형] 시뮬레이션
[풀이]
레일의 최대 개수가 N밖에 안되므로 next_permutation을 이용하면 모든 레일 순서를 구할 수 있습니다.
각 순서마다 문제의 조건에 맞게 시뮬레이션 하면 들어야 하는 무게의 최솟값을 구할 수 있습니다.
#include <cstdio>
#include <algorithm>
using namespace std;
int N,M,K,a[10],ans=9e8;
int main(){
scanf("%d%d%d",&N,&M,&K);
for(int i=0;i<N;i++) scanf("%d",&a[i]);
sort(a,a+N);
do{
int cur=0, work=0;
for(int i=0;i<K;i++){
int r = M;
while(1){
r-=a[cur];
if(r<0) break;
work+=a[cur++];
cur%=N;
}
}
ans=min(ans,work);
}while(next_permutation(a,a+N));
printf("%d",ans);
}
https://github.com/has2/Problem-Solving/blob/master/softeer/level3/택배_마스터_광우.cpp
'Problem-Solving > Softeer' 카테고리의 다른 글
[Softeer/소프티어][level3] GINI야 도와줘 (C++) (0) | 2021.10.02 |
---|---|
[Softeer/소프티어][level4] 지우는 소수를 좋아해 (C++) (4) | 2021.09.27 |
[Softeer/소프티어][level2] 지도 자동 구축 (C++) (0) | 2021.09.27 |
[Softeer/소프티어][level2] 장애물 인식 프로그램 (C++) (0) | 2021.09.27 |
[Softeer/소프티어][level2] 8단 변속기 (C++) (0) | 2021.09.27 |