Algorithm/DP

BOJ#2293 동전1

밤이2209 2017. 1. 24. 17:58

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