메모화재귀(2)
-
[알고리즘/C++] 최소 지폐 개수 구하기(동적 프로그래밍)
각 가치가 A, B, C, D인 화폐가 있다고 하자. 최소한의 화폐 장수를 사용하여 특정 액수 X를 만들어야 하는 문제이다. 최적해의 해를 빠르게 구하기 위해서는 동적 프로그래밍(Dynamic Programming)을 이용하여야 한다. typedef vector vi; #define inf pow(2,30); int minNumCoin(int curBalance, vi coinCase, map& selected) { if (curBalance < 0) { return inf; } else if (curBalance == 0) { return 0; } else { int ans = inf; for (auto coin : coinCase){ int pre_result = minNumCoin(curBalanc..
2023.07.21 -
[TopCoder] CorporationSalary (회사 급여)
당신은 대기업 인사과에서 일하고 있습니다. 각 직원은 여러 명의 직접 관리자 및/또는 여러 명의 직접 부하 직원을 가질 수 있습니다. 물론 그의 부하직원들도 그들만의 부하직원이 있을 수 있고, 그의 직속상관들도 그들만의 관리자가 있을 수 있다. 우리는 X가 A의 지배인, A가 B의 지배인, D가 Y의 지배인 등 일련의 종업원 A, B, ..., D가 존재한다면 종업원 X는 종업원 Y의 보스라고 말한다(물론 X가 종업원 Y의 직접 지배인이라면 X는 종업원 Y의 보스가 될 것이다). 만약 A가 B의 보스라면, B는 A의 보스가 될 수 없다. 새로운 회사 방침에 따르면, 부하 직원이 없는 직원의 급여는 1입니다. 만약 직원에게 부하 직원이 있다면, 그의 급여는 그의 직속 부하 직원들의 급여를 합한 것과 같다...
2023.02.25