[백준/BOJ] 백준 11399번 : ATM

2020. 6. 6. 13:50알고리즘 문제풀이

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

 

11399번: ATM

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

www.acmicpc.net

그리디 알고리즘을 통해 문제를 해결하였다.

필요한 시간의 합이 최소가 되려면, 줄을 설 때, 오름차순으로 줄을 서서 시간이 짧은 것부터 돈을 인출하게 해야 된다.

 

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);
	vector<int> input;
	int n;
	int temp;
	int tempsum = 0;
	int sum = 0;

	cin >> n;

	for (int i = 0; i < n; i++)
	{
		//각 사람이 돈을 인출하는데 걸리는 시간을 입력
		cin >> temp;
		input.push_back(temp);
	}

	//오름차순으로 정렬
	sort(input.begin(), input.end());

	for (int i = 0; i < n; i++)
	{
		tempsum += input[i];
		sum += tempsum;
	}

	cout << sum;

	return 0;
}