본문 바로가기

BOJ/C++

동전2

 

*dp 배열을 2차원으로 정의하는데, 

dp[i][j] = i번째 동전을 이용해서 j원을 만드는데 사용하는 최소 동전 사용 횟수 

*동전들을 오름차순으로 정렬한다.

*제일 가치가 작은 동전이 k보다 크면 불가능한 경우이다. (-1)

*2차원 반복문에서 1원부터 k원까지 확인하는데, 각 조합을 구하는 경우가 3가지로 나뉘어진다.

1. i원이 j번째 동전으로 나뉘어 떨어질때 -> i/coin[j] 가 최소가 될 수 있다. 

2. j번째 동전을 사용했을 때 -> dp[j][i-coin[j]]+1

3. j번째 동전을 사용하지 않았을 때 -> dp[j-1][i]

 

테스트케이스

3 13
1
5
12
ans = 2

2 100
7
8
ans = 13

3 24
1
7
10
ans = 3

3 15
1
5
12
ans = 3

3 11
1
5
12
ans = 3

 

'BOJ > C++' 카테고리의 다른 글

사탕게임  (0) 2020.03.08
좋은 단어  (0) 2020.03.08
최종순위  (0) 2020.03.07
욕심쟁이 판다  (0) 2020.03.05
에너지모으기  (0) 2020.03.04