BOJ

백준 11399 - ATM

yanJuicy 2019. 7. 16. 02:48
반응형

문제

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

 

11399번: ATM

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

www.acmicpc.net

 

풀이

P 배열에서 i 번째 있는 사람은 1번부터 i - 1번째 사람까지 다 더한 값이 된다. 따라서 i 번째 있는 사람의 값이 최소가 되기 위해서는 1번 부터 i-1 번 까지 최솟값으로 이루어지면 된다. 그러므로 P 배열을 내림차순으로 정렬을 하고 P 배열의 값을 더해주면 된다. 

 

코드

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
27
28
29
30
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int N;
int P[1001];
int result;
 
int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    cin >> N;
    for (int i = 1; i <= N; i++cin >> P[i];
 
    sort(P + 1, P + 1 + N);
 
    for (int i = 1; i <= N; i++)
    {
        P[i] += P[i - 1];
        result += P[i];
    }
 
    cout << result;
 
    return 0;
}
 
cs

 

 

반응형