Search
Duplicate

ATM

주차
14
문제번호
11399
언어
C++
티어
실버
유형
그리디
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

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++
복사