728x90
e.g) 1, 2, 5, 10, 20 ,50 만원으로 100만원을 계산하는 방법은 몇가지인가?
// 재귀
public class Main {
public static void main(String[] args) {
System.out.println(solution(new int[]{1, 2, 5, 10, 20, 50}, 100));
}
static int solution(int[] bills, int money) {
return numOfPayAmount(money, bills, bills.length);
}
private static int numOfPayAmount(int money, int[] bills, int category) {
int answer = 0;
if (category == 1) {
if (money % bills[0] == 0) {
return 1;
} else {
return 0;
}
} else {
int length = money / bills[category - 1];
for (int i = 0; i <= length; i++) {
int newMoney = money - (bills[category - 1] * i);
answer += numOfPayAmount(newMoney, bills, category - 1);
}
return answer;
}
}
}
// 단순 포문
728x90
'Algorithm' 카테고리의 다른 글
피보나치 메모이제이션 적용하기 (0) | 2020.02.03 |
---|---|
팩토리얼 꼬리 재귀로 풀기 (0) | 2020.02.03 |
알고리즘 이항계수 풀기 (0) | 2020.02.03 |
2020 카카오 코딩 테스트 (0) | 2020.02.03 |
정올/큐 (0) | 2019.02.06 |