본문 바로가기
알고리즘/백준

[백준/C,C++] 11399번: ATM

by 이민훈 2021. 3. 13.

www.acmicpc.net/problem/11399

 

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

대기 시간을 오름차순으로 정렬하는 것만으로도 간단히 해결되는 문제입니다.

댓글