[SOFTEER] 택배마스터 광우

less than 1 minute read

문제출처

문제접근

  • 헤더파일에 **next_permutation** 함수를 활용한다.
    • 배열이 반드시 오름차순으로 정렬되어 있어야 한다.
  • m을 초과하지 않는 무게만 레일에 올릴 때 1회 일을 수행한다.

구현

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(int argc, char** argv)
{
	int n,m,k;
	scanf("%d %d %d", &n, &m, &k);
	vector<int> rails(n);
	sort(rails.begin(), rails.end());
	for(int i=0; i<n; i++){
		scanf("%d", &rails[i]);
	}
    sort(rails.begin(), rails.end());
	int ans = 3000; // 문제 범위에서 최대 무게는 2500
	do{
		int load=0, idx=0;
		for(int i=0; i<k; i++){
			int r=m;
			while(true){
				r -= rails[idx];
				if(r<0) break;
				load += rails[idx++];
				idx %= n;
			}
		}
		ans = min(ans, load);
	}while(next_permutation(rails.begin(), rails.end()));

	cout << ans << endl;
	return 0;
}

Categories:

Updated:

Leave a comment