https://www.acmicpc.net/problem/11399
최소 시간(전체)이 되도록 순서를 정하라는데
전체 기다리는 시간이 줄어들려면 그냥 빨리끝나는 사람부터 뽑으면 된다.
매 상황마다 가장 빨리 끝날 수 있는 사람을 뽑아나가면 그게 곧 최소시간이 된다.
= 그리디를 써라
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin >> arr[i];
}
sort(arr.begin(), arr.end());
int answer = 0;
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
answer += arr[j];
}
}
cout << answer;
return 0;
}
'알고리즘' 카테고리의 다른 글
백준 10026: 적록색약[C++] (0) | 2024.07.18 |
---|---|
백준 7662: 이중 우선순위 큐 [C++] (0) | 2024.07.17 |
백준 11279: 최대 힙 [C++] (0) | 2024.07.15 |
백준 1927: 최소 힙 [C++] (0) | 2024.07.14 |
백준 1541: 잃어버린 괄호 [C++] (1) | 2024.07.13 |