Algorithm/Greedy

백준 / 11399 / ATM

voidtype 2023. 3. 2. 08:22

문제

https://www.acmicpc.net/problem/11399

ATM앞에서 N명의 사람이 돈을 인출하는데 각각 pi의 시간이 걸린다.
당연히, 짧은 시간을 소비하는 사람부터 줄을 서서 처리하면 전체 걸리는 시간이 최소가 될 것이다. 이 최소 시간을 구하라.

접근방식

N명의 사람에 대해서 소비시간을 정렬한 후, 누적된 시간을 다 더하면 된다.

(풀이)

  1 #include <iostream>
  2 #include <algorithm>
  3
  4 using namespace std;
  5 int main()
  6 {
  7     int N, i;
  8     int time[1000];
  9     int acc = 0;
 10     int answer = 0;
 11     cin >> N;
 12
 13     for (i = 0 ; i < N; i++)
 14     {
 15         cin >> time[i];
 16     }
 17     sort(time, time+N);
 18     for (i = 0 ; i < N; i++)
 19     {
 20         acc += time[i];
 21         answer += acc;
 22     }
 23     cout << answer << endl;
 24 }

회고

acc 변수와 answer변수를 서로 분리해서 생각을 해야하는데, answer변수 하나로 누적을 하다보니 잘못된 값을 출력하게 되었다. 사소한 것이지만 이런것으로 시간을 낭비했는데 다음부터 꼼꼼하게 확인해보도록 합니다.