summaryrefslogtreecommitdiff
path: root/PlaygroundCpp/Sources/Playground.cpp
blob: 070cf04108d2c4d0e904af39816d935df5a78b38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <climits>
//#include <gtest/gtest.h>

int getChange(int money) {
	// denominations: 1, 3, 4
	int denominations[3] = { 1, 3, 4 };
	int minNumCoins[money + 1] = { };
	for (int m = 1; m < money + 1; m++) {
		minNumCoins[m] = INT_MAX;
		for (int i = 0; i < 3; i++) {
			if (m >= denominations[i]) {
				int numCoins = minNumCoins[m - denominations[i]] + 1;
				if (numCoins < minNumCoins[m]) {
					minNumCoins[m] = numCoins;
				}
			}
		}
	}
	return minNumCoins[money];
}

//TEST(SortPoint, Sort1) {
//	ASSERT_EQ(2, getChange(2));
//	ASSERT_EQ(9, getChange(34));
//}

int main() {
  int m;
  std::cin >> m;
  std::cout << getChange(m) << '\n';
}