문제
동전 종류를 담은 int형 배열과 목표 액수를 매개변수로 전달받았을 때
가지고 있는 동전 종류로 목표 액수를 만들 수 있는 모든 가짓수를 구하시오.
(배열로 받은 동전 종류는 각각 개수에 제한이 없다고 가정)
해결
코드보기
더보기
public class Dp {
public long ocean(int target, int[] type) {
// 가짓수를 담을(반환할) 결과값 0으로 초기화
long result = 0;
long[][] arr = new long[type.length][target + 1];
for(int i = 0; i < type.length; i++) {
arr[i][0] = 1;
}
// type(동전)의 최소 단위로 나누어 떨어지면 교환 가능하기 때문에 방법수 1 저장
for (int i = type[0]; i <= target; i++) {
if (i % type[0] == 0) arr[0][i] = 1;
}
for (int i = 1; i < type.length; i++) {
for (int j = 0; j <= target; j++) {
if(type[i] > j) {
arr[i][j] = arr[i-1][j];
}
else {
arr[i][j] = arr[i][j-type[i]] + arr[i-1][j];
}
}
}
result = arr[type.length - 1][target];
return result;
}
}
'JAVA > 해결한 문제' 카테고리의 다른 글
[Java/알고리즘] Quick Sort(퀵 정렬) (0) | 2022.10.24 |
---|---|
소수(prime number)인지 구하는 함수 구현하기 (3) | 2022.06.13 |
탐욕 알고리즘(Greed Algorithm) - 짐을 박스에 담는 최선의 방법 (0) | 2022.06.02 |
baekjoon-1018번 "체스판 다시 칠하기" (0) | 2022.05.29 |
baekjoon-1085번 "직사각형 탈출" 회고 (0) | 2022.05.25 |