본문 바로가기

그리디 알고리즘

ATM

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

 

11399번: ATM

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

www.acmicpc.net

그리디 알고리즘은 무조건 왜 그리디로 풀어야 하는지를

생각하고 움직여야한다

 

오름차순으로 만들면 된다

왜??? 최솟값을 구하는 문제이기 때문

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    vector<int> a(n);
 
    for (int i = 0; i < n; i++)
        cin >> a[i];
    sort(a.begin(), a.end());
    int sum = 0;
    int ans = 0;
    for (int i = 0; i < n; i++)
    {
        sum += a[i];
        ans += sum;
    }
 
    cout << ans << '\n';
    return 0;
}
cs

'그리디 알고리즘' 카테고리의 다른 글

전구와 스위치  (0) 2023.06.21
행렬  (0) 2023.06.20
회의실 배정  (0) 2023.05.11
동전 0  (0) 2023.05.11
Opening Ceremony  (0) 2023.04.29