백준 단계별로 풀어보기 [그리디 알고리즘] ATM
https://www.acmicpc.net/problem/11399
[풀이]
각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값은 Pi가 가장 작은 사람 순으로 돈을 인출할 때 구할 수 있다. 따라서 그리디 알고리즘이 적용되는 문제이므로 입력받은 Pi를 오름차순으로 정렬 후 누적합을 구하여 구할 수 있다.
[코드]
#include <iostream>
#include <algorithm>
int main() {
int num;
std::cin >> num;
int* wait_time = new int[num];
for (int i = 0; i < num; i++) {
std::cin >> wait_time[i];
}
std::sort(wait_time, wait_time + num);
int sum = 0;
for (int i = num; i >= 0; i--) {
for(int j=0; j<i; j++)
sum += wait_time[j];
}
std::cout << sum;
delete[] wait_time;
return 0;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 15649 N과 M (1) (0) | 2021.07.20 |
---|---|
[c++] 백준 11047 동전 0 (0) | 2021.07.20 |
[c++] 백준 1427 소트인사이드 (0) | 2021.07.19 |
[c++] 백준 1436 영화감독 숌 (0) | 2021.07.19 |
[c++] 백준 3052 택시 기하학 (0) | 2021.07.18 |