문제
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변수 하나로 누적을 하다보니 잘못된 값을 출력하게 되었다. 사소한 것이지만 이런것으로 시간을 낭비했는데 다음부터 꼼꼼하게 확인해보도록 합니다.