예제를 통해 보여주듯 낮은 값부터 해결해주는 것이 필요한 시간의 합의 최솟값을 구할 방법이다.
오름차순으로 정렬해주고 합을 구해주면 된다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
int N, sum = 0, totalSum = 0;
cin >> N;
vector<int> time(N);
for (int i = 0; i < N; ++i)
cin >> time[i];
sort(time.begin(), time.end());
for (int i = 0; i < N; ++i)
{
sum += time[i];
totalSum += sum;
}
cout << totalSum;
}
스케줄링을 배웠다면 빠르게 해결할 수 있는 것부터 해결해주면 빠른 응답을 보여준다는 것을 배웠을 것이다. 해당 문제도 같은 원리로 빠른 것부터 해결하여 전체적인 값을 줄이는 것이다.