algorithm/Sorting, Binary Search
[C++] BOJ 11399 ATM
gartenhh
2021. 5. 8. 01:41
문제
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
코드
#include<iostream>
#include<algorithm>
using namespace std;
int n, arr[1001], sum = 0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
sort(arr, arr + n);
for (int i = n; i > 0; i--)
sum += i * arr[n - i];
cout << sum;
}
풀이방법
시간계산과정을 살펴보면, 맨앞에 선 사람이 걸리는 시간은 n번, 2번째로 선 사람이 걸리는 시간은 (n-1)번, ... 이런 식으로 최종시간을 계산한다는 사실을 발견할 수 있다. 따라서 인출하는 데에 걸리는 시간이 적은 사람부터 ATM기를 쓰게 한다.
고민과정
정렬을 직접 구현하려다가 그냥 sort함수를 썼다..