문제설명
n가지 종류의 동전으로 k원을 만들수 있는 경우의 수를 구하는 문제입니다.
작동 순서
1. 동전 종류의 개수와 만드려는 금액을 입력받습니다.
2. 동전의 종류를 입력받습니다.
3. 금액별로 각 동전으로 만들 수 있는 방식의 수를 더해줍니다.(해당 금액-동전의 금액)을 만들수 있는 방법의 수를 더해줍니다.
4. 원하는 금액을 만들 수 있는 방법의 개수를 출력합니다.
소스코드
import java.io.*;
public class 백준_2293번_동전1 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n=Integer.parseInt(input[0]), k=Integer.parseInt(input[1]);
int[][] dp = new int[n][k+1];
for(int i=0;i<n;i++){
int coin=Integer.parseInt(br.readLine());
dp[i][0]=1;
for(int j=1;j<k+1;j++){
if(j-coin>=0) dp[i][j]=dp[i][j-coin];
if(i>0) {
dp[i][j]+=dp[i-1][j];
}
}
}
System.out.print(dp[n-1][k]);
}
}
후기
문제를 푸는 것 보다 원리를 설명하는게 훨씬 더 어렵네요... 아직은 이해력이 많이 부족한 것 같습니다.