솜이의 데브로그

백준 2293번 ) 동전 1 (java) 본문

Algorithm/백준

백준 2293번 ) 동전 1 (java)

somsoming 2022. 7. 23. 01:42

https://www.acmicpc.net/problem/2293

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

문제

 

풀이

https://lotuslee.tistory.com/113?category=848933 

 

[백준 2293번] 동전 1 (java)

2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 합이..

lotuslee.tistory.com

위 블로그를 참고했다.

dp 는 점화식 세우는게 너무 어렵다 ㅠㅠ

 

코드

import java.io.*;
import java.util.*;

public class BOJ_2293 {
    static int n, k;
    static int[] coin, dp;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        n = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());

        coin = new int[n];
        dp = new int[k+1];

        for(int i=0; i<n; i++) {
            coin[i] = Integer.parseInt(br.readLine());
        }

        dp[0] = 1;
        for(int i=0; i<n; i++){
            for(int j=coin[i]; j<= k; j++) {
                dp[j] += dp[j-coin[i]];
            }
        }

        System.out.println(dp[k]);
    }
    
}

 

 

생각 할 점

dp 문제 점화식 세우는 방법 연습하기

중복일 경우 처리하는 방법