코딩테스트/Baekjoon

[백준 #11399] ATM (C++)

동띵 2021. 9. 23. 23:57

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

돈을 인출하는데 필요한 시간의 합의 최솟값을 구하려면

오름차순으로 정렬한 후 더해야 하므로,

각 사람이 돈을 인출하는데 걸린 시간 p를 입력하여 벡터 v에 넣은 후

오름차순으로 정렬해 주었다.

 

그리고 이들을 순차적으로 더한 합을 넣을 벡터를 만들어 

그 안에 넣어준 후, 전체 합을 구해 출력하였다.

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int n, p, sum = 0, result = 0;
	cin >> n;
	vector<int> v;
	vector<int> sum_vec;

	for (int i = 0; i < n; i++) {
		cin >> p;
		v.push_back(p);
	}

	sort(v.begin(), v.end());

	for (int i = 0; i < n; i++) {
		sum += v[i];
		sum_vec.push_back(sum);
	}

	for (int i = 0; i < n; i++) {
		result += sum_vec[i];
	}
	cout << result;
	
	return 0;
}