BOJ#2293 동전1
* 문제
* 풀이
정말 이해하기 쉽지 않은 문제였습니다.
조금 더 완벽하게 이해한 후에 저의 풀이를 포스팅하도록 하겠습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* BOJ#2293 동전1
* https://www.acmicpc.net/problem/2293
*/
public class Main {
// dp[i] : n가지 종류의 동전을 써서 i원을 만드는 경우의 수
static int[] dp = new int[10001];
public static void main(String[] args) throws IOException {
int n; // 동전 종류 개수
int k; // 목표
int[] coins;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
coins = new int[n];
for (int i = 0; i < n; i++) {
coins[i] = Integer.parseInt(br.readLine());
}
solve(n, k, coins);
System.out.println(dp[k]);
}
static void solve(int n, int target, int[] coins) {
dp[0] = 1;
for (int i = 0; i < n; i++) {
for (int j = coins[i]; j <= target; j++) {
dp[j] += dp[j - coins[i]];
}
}
}
}
* 나의 코드
'Algorithm > DP' 카테고리의 다른 글
BOJ#1149 RGB거리 (0) | 2017.02.08 |
---|---|
BOJ#9251 LCS (0) | 2017.02.06 |
BOJ#11066 파일 합치기 (Merging Files) (3) | 2016.12.23 |
BOJ#2011 암호코드 (0) | 2016.12.12 |
BOJ#2225 합분해 (0) | 2016.12.09 |