
풀이과정
N번째 사람이 인출하는데 걸리는 시간 = N-1번까지 기다린 시간 + N번째를 인출하는데 걸리는 시간
인출하는데 걸리는 시간이 적은 순서대로 인출하면 최소값을 구할 수 있다.
코드
더보기
#include <iostream>
using namespace std;
int iNum = 0;
int NeedTime(int* p, int added)
{
int min = 0;
for (int i = 0; i < iNum; ++i)
{
if (p[min] > p[i] && p[i] != 2000)
min = i;
}
if (p[min] == 2000) return 0;
int tmp = min;
min = p[min];
p[tmp] = 2000;
return min + added + NeedTime(p, added + min);
}
int main()
{
int* pValue;
int iAdded = 0;
cin >> iNum;
pValue = new int[iNum];
for (int i = 0; i < iNum; ++i)
cin >> pValue[i];
cout << NeedTime(pValue, 0) << endl;
return 0;
}
'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글
| [백준] C++ 1931번 : 회의실배정 (0) | 2019.12.04 |
|---|---|
| [백준] C++ 11047번 : 동전 0 (0) | 2019.12.03 |
| [백준] C++ 4936번 : 섬의 개수 (0) | 2019.11.20 |
| [백준] C++ 1110번 : 더하기 사이클 (0) | 2019.11.20 |
| [백준] C++ 1912번 : 연속합 (0) | 2019.11.20 |