문제
코드
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
vector<int> time;
int N, t, sum = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> t;
time.push_back(t);
}
sort(time.begin(), time.end());
for (int i = 0; i < N; i++)
sum += time[i] * (N - i);
cout << sum;
}
풀이
1. 시간이 적게 걸리는 사람이 맨 앞에 설수록 유리하므로, 벡터time에 각 소요시간을 입력받아 오름차순으로 정렬한다.
2. 사람이 N 명일 때 총 걸리는 시간은 time[0]*(N-0) + time[1]*(N-1) + time[2]*(N-2) + ... + time[N-1]*(N-N-1) 이므로 반복문을 사용해 각각 sum=0에 더한다.
'코테 > Greedy' 카테고리의 다른 글
[C/C++] 백준 13305, Greedy (0) | 2023.02.09 |
---|---|
[C/C++] 백준 1541, Greedy (0) | 2023.02.09 |
[C/C++] 백준 1931, Greedy (0) | 2023.02.09 |
[C/C++] 프로그래머스 스쿨 무지의 먹방라이브, Greedy (0) | 2023.02.08 |
[C/C++] 나동빈 볼링공 고르기, Greedy (0) | 2023.02.07 |