본문 바로가기
Algorithm/BOJ

[BOJ]11399번: ATM (c++)

by HBGB 2020. 6. 20.

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()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	// 입력
	int N;
	cin >> N;
	vector<int> times(N);
	for (int i = 0; i < N; ++i)
	{
		cin >> times[i];
	}

	// 오름차순 정렬
	sort(times.begin(), times.end());

	// 각각의 기다린 시간 총합 구하기
	int total = 0, sum = 0;
	for (int i = 0; i < N; ++i)
	{
		sum += times[i];
		total += sum;
	}

	cout << total;

	return 0;
}

 

 

각 사람이 돈을 인출하는데 걸리는 시간 P[i]가 주어진다. (1 ≤ P[i] ≤ 1,000)

각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하시오.

 

빠르게 인출하는 사람이 먼저 돈을 뽑을 수록

전체 기다리는 시간이 줄어들게 된다.

따라서 주어진 배열을 오름차순 정렬 하고 각각 기다린 시간의 총합을 구한다.

 

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]2138번: 전구와 스위치 (c++)  (0) 2020.06.24
[BOJ]1080번: 행렬 (c++)  (0) 2020.06.20
[BOJ]1931번: 회의실배정 (c++)  (0) 2020.06.20
[BOJ] 11047번: 동전 0 (c++)  (0) 2020.06.17
[BOJ]14395번: 4연산 (c++)  (0) 2020.06.17

댓글