최대 1 분 소요

Question

11399Q


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;
}

Result

11399