[BOJ] 11399 : ATM
Question
Solution
- P(i)를 작은 수부터 차례로 나열하면 최솟 값이 될것같다
-
합산은 사람 수(N) 만큼 진행한다.
결과론 적으로 보면0번째는 N 개
1번째는 N-1 개
2번째는 N-2 개
...
N-1번째는 N-(N-1) 개
가 되어 [출력 값] = N * P0 + (N-1) * P1 + (N - (N-1)P(N-1) 라는 식이 도출 된다.
[C++]
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1001];
int main()
{
// 사람 수 입력
int n;
cin >> n;
// 인출 시간 입력
for (int idx = 0; idx < n; idx++)
{
cin >> arr[idx];
}
// 인출 시간 오름차순 정렬
sort(arr, arr + n);
// 인출 시간의 최소합
int sum = 0;
for (int idx = 0; idx < n; idx++)
{
sum += (n - idx) * arr[idx];
}
// 최소합 출력
cout << sum;
return 0;
}