https://www.codetree.ai/missions/2/problems/coin-change?utm_source=clipboard&utm_medium=text
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
거슬러줄 금액과 동전의 종류가 나오면, 거슬러줄 수 있는 최소한의 동전 수를 출력하는 문제이다.
이 문제는 dp를 사용했다.
0부터 해당 금액까지의 dp배열을 선언하고, 사용할 수 있는 동전들을 하나 쓰는 방법을 모두 비교하여 최솟값을 넣도록 하였다.
import java.util.*;
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
for(int i = 0;i<n;i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int[] dp = new int[m+1];
for(int i = 1;i<=m;i++){
int min = i;
int ok = 0;
for(int j = 0;j<n;j++){
if((i - arr[j] > 0 && dp[i-arr[j]]!= 0) || i-arr[j] == 0){
ok = 1;
min = Math.min(min, dp[i-arr[j]]);
}
}
if(ok == 1) dp[i] = min + 1;
else dp[i] = 0;
//System.out.println(dp[i]);
}
if(dp[m] != 0 )System.out.println(dp[m]);
else System.out.println(-1);
}
}
'알고리즘 > 코드트리 문제풀이' 카테고리의 다른 글
코드트리 [자바 java] 적절한 옷 고르기 (0) | 2023.08.15 |
---|---|
코드트리 [자바 java] 연속 부분 합의 최댓값 구하기 (0) | 2023.08.14 |
코드트리 [자바 java] 부분수열의 합이 m (0) | 2023.08.12 |
코드트리 [자바 java] 조삼모사 (0) | 2023.08.11 |
코드트리 [자바 java] 최소 경로로 탈출하기 (0) | 2023.08.10 |