코테 공부
[DP]문제#5. 등굣길
DaEun_
2022. 5. 11. 15:21
코딩테스트 연습 - 등굣길 | 프로그래머스 (programmers.co.kr)
이 문제는 따져야할 조건이 많다
1. 만약 물웅덩이가 테두리 부분에 있을 경우
ex) m=4, n=3 인데 물웅덩이가 (1,2)에있으면 (1,3), (1,3) 도 이동할수 없다.
2. 주어진 puddles[][]에서
puddles[행][열] (x) puddles[열][행] (o)
3. 경로의 개수를 구하는 과정에서도 계산된 값에 %1000000007 을 해주어야한다.
결과값에만 처리하면 안된다
이 조건들을 꼼꼼히 따져가며 풀어야할 문제이다.
import java.util.Scanner;
//동전2
public class Main {
static int n;
static int k;
static int[] money;
static int[] d;
static int coin;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
n=in.nextInt();
k=in.nextInt();
money=new int[n];
d=new int[k+1];
for(int i=0;i<n;i++) {
money[i]=in.nextInt();
}
d[0]=0;
for(int i=0;i<n;i++) {
coin=money[i];
for(int j=coin;j<=k;j++) {
if(j==coin) d[j]=1;
if(d[j-coin]==0) continue;
else {
if(d[j]!=0) d[j]=Math.min(d[j], d[j-coin]+1);
else if(d[j]==0) d[j]= d[j-coin]+1;
}
}
}
if(d[k]==0) System.out.println(-1);
else System.out.println(d[k]);
}
}