백준공부/java

[백준] 2293번 동전 1 (gold 5

gomduri43 2023. 9. 22. 22:49

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

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.valueOf(st.nextToken());
        int k=Integer.valueOf(st.nextToken());
        int[] num=new int[n];
        for(int i=0; i<n; i++){
            num[i]=Integer.valueOf(br.readLine());
        }
        Arrays.sort(num);
        int[] dp=new int[k+1];
        for(int i=num[0]; i<=k; i+=num[0]){
            dp[i]=1;
        }

        int pre=num[0];
        for(int i=1; i<n; i++){
            if(pre==num[i]){
                continue;
            }
            int temp=num[i];
            for(int j=1; j<=k; j++){
                if(j/temp==1 && j%temp==0){
                    dp[j]++;
                }
                if(dp[j]!=0 && j+temp<=k){
                    dp[j+temp]=dp[j+temp]+dp[j];
                }
            }
            pre=num[i];
        }

        bw.write(dp[k]+"");
        bw.flush();

    }
}