(cpp) Baekjoon 11399번 문제 ‘ATM’ - 그리디알고리즘

Baekjoon 11399번 문제 ‘ATM>’ - 그리디알고리즘


문제

풀이

 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
vector<int> p_list;

int n,ret,p;
int main() {
  
	//N명의 사람들
	//ni번째 사람이 돈 뽑는데 걸리는 시간  = pi
	//p=[3 1 4 3 2]
	//n=[1 2 3 4 5] 
	//--> 각 사람이 돈뽑는데 걸리는 시간 합
	//-->p1 +(p1+p2) + (p1+p2+p3) + (p1+p2+p3+p4) + (p1+p2+p3+p4+p5)
	//--> 가장 중복 많이되는 p1이 작을 수록 총 시간 합 줄어듦
	//-->시간 적게 걸리는 사람일수록 앞에서는게 좋음
	//ans = p[0]*(n-0) + p[1]*(n-1) + p[2]*(n-2) +...+ p[n-1]*(n-n-1)

	cin >> ret;
	n = ret;
	while (ret--) {
		scanf("%d", &p);
		p_list.push_back(p);
	}
	sort(p_list.begin(),p_list.end());
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum = sum + p_list[i] * (n - i);
	}

	printf("%d", sum);
}