Memo
문제 접근
•
시간이 다음 차례 사람들에게 누적되는 것에 집중해 봅니다.
•
앞의 차례 사람들의 시간이 적을 수록, 각 사람이 돈을 인출하는데 필요한 시간의 합이 최소가 됩니다.
해결 방법
•
각 사람별로 시간을 저장하고 있는 배열을 정렬시킵니다.
•
루프를 돌며 현재 값을 이전 값과 합칩니다.
•
다시 처음부터 루프를 돌며 시간의 합을 계산합니다.
Code
제출 날짜
@4/1/2021
메모리
2016 KB
시간
0 ms
#include <iostream>
#include <vector>
#include <algorithm>
int N, ans;
std::vector<int> atm;
void input_faster()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
input_faster();
std::cin >> N;
atm.resize(N + 1);
for (int i = 1 ; i <= N ; i++)
std::cin >> atm[i];
}
void solve()
{
std::sort(atm.begin(), atm.end());
for (int i = 1 ; i <= N ; i++)
atm[i] += atm[i - 1];
for (int i = 1 ; i <= N ; i++)
ans += atm[i];
}
void print_val()
{
std::cout << ans;
}
int main()
{
input();
solve();
print_val();
return (0);
}
C++
복사