알고리즘/백준
[백준/C,C++] 11399번: ATM
이민훈
2021. 3. 13. 19:26
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
총 대기 시간은 누적된 대기 시간이 작을수록 작아집니다.
걸리는 시간 | 3 | 1 | 4 | 3 | 2 |
시간의 합 | 3 | 4 | 8 | 11 | 13 |
3 + 4 + 8 + 11 + 13 = 39분
걸리는 시간 | 1 | 2 | 3 | 3 | 4 |
시간의 합 | 1 | 3 | 6 | 9 | 13 |
1 + 3 + 6 + 9 + 13 = 32분
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(void)
{
int n; cin >> n;
vector<int> p(n);
for (int i = 0; i < n; i++) {
cin >> p[i];
}
sort(p.begin(), p.end());
int sum = p[0];
for (int i = 1; i < n; i++) {
p[i] = p[i] + p[i - 1];
sum += p[i];
}
cout << sum;
return 0;
}
대기 시간을 오름차순으로 정렬하는 것만으로도 간단히 해결되는 문제입니다.