teddy8 Full Stack Software Engineer

[BaekJoon][Greedy] 11399. ATM

2019-06-25
teddy8

문제

URL : https://www.acmicpc.net/problem/tag/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98


소스코드

/* 문제 : [11399] ATM
[input]
5
3 1 4 3 2
[output]
32
[설명]
줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다.
총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2이 입력됬을 때
[1, 2, 3, 4, 5] 순서로 줄을 선다면, 3, 3+1, 3+1+4, 3+1+4+3, 3+1+4+3+2 = 총 39분
[2, 5, 1, 4, 3] 순서로 줄을 선다면, 1, 1+2, 1+2+3, 1+2+3+3, 1+2+3+3+4 = 총 32분이다.
이 때, 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성해라.
*/
#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> numList;
	int n, sum = 0;

	// 줄은 선 사람 입력
	cin >> n;

	// 그 사람들의 각각 작업완료시간 입력
	for (int i = 0, k; i < n; i++) {
		cin >> k;
		numList.push_back(k);
	}

	// 작업완료시간 오름차순 정렬
	numList.sort();

	for (int i = 0, k = 0; i < numList.size(); i++) {
		list<int>::iterator iter = numList.begin();

		while (iter != numList.end() && (k <= i)) {
			sum += *iter;
			iter++;
			k++;
		}

		k = 0;
	}

	cout << sum;

	return 0;
}


Comments

Content