주소 : https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int N;
int sum = 0;
vector<int> v;
cin >> N;
for (int i = 0;i < N;i++)
{
int element;
cin >> element;
v.push_back(element);
}
sort(v.begin(), v.end());
for (int i = 0;i < N;i++)
{
sum += v[i] * (N - i);
}
cout << sum;
}
마무리 : 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하기 위해서는 걸리는 시간이 작은 사람부터 인출하는 것이 최솟값을 구하는 방법이다. 그래서 sort를 한 뒤에 제일 먼저 돈을 인출하는 시간은 각 사람들이 인출할 때 시간이 들기 때문에 사람의 수를 곱하고 그 다음 인출하는 시간은 사람의 수-1 씩으로 시간을 계산하면 된다.
'백준 > C++' 카테고리의 다른 글
백준 1003번 : 피보나치 함수 [C++] (0) | 2022.08.28 |
---|---|
백준 17219번 : 비밀번호 찾기 [C++] (0) | 2022.08.28 |
백준 11047번 : 동전 0 [C++] (0) | 2022.08.26 |
백준 1764번 : 듣보잡 [C++] (0) | 2022.08.26 |
백준 1620번 : 나는야 포켓몬 마스터 이다솜 [C++] (0) | 2022.08.26 |