알고리즘 공부

백준 동전2(복습)

컴퓨터과학 2023. 11. 15. 00:04

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

 

2294번: 동전 2

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

www.acmicpc.net

자바로 풀었고 복습용이었습니다. 오답노트 한번 해야할것같은데 오늘은 좀 늦어서 내일 하도록 하겠습니다.

import java.util.*;
import java.lang.*;
import java.lang.reflect.Array;
import java.io.*;
public class Main {
	
	public static void main(String[] args) throws Exception {
		Scanner scan=new Scanner(System.in);
		
		int n=scan.nextInt();
		int k=scan.nextInt();
		int coin[]=new int[n];
		for(int i=0;i<n;i++) {
			int tmp=scan.nextInt();
			coin[i]=tmp;
		
		}
		Arrays.sort(coin);
		int dp[]=new int[k+1];
		for(int i=0;i<k+1;i++) {
			dp[i]=100001;
		}
		dp[0]=0;
		
		for(int i=0;i<n;i++) {
		
			for(int j=coin[i];j<=k;j++) {
				
				dp[j]=Math.min(dp[j], dp[j-coin[i]]+1);
			}
		}
		//System.out.println();
		if(dp[k] == 100001) {
			System.out.println(-1);
		}else {
			System.out.println(dp[k]);
		}
	}
}