본문 바로가기

Programmers/Level3

거스름돈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
    
    public int solution(int n, int[] money) {
        int answer = 0;
        int[] arr = new int[n+1];
        Arrays.sort(money);
        
        arr[0= 1;
        for(int m : money){
            for(int i=m;i<=n;i++){
                arr[i] += arr[i-m];
            }
        }
        answer = arr[n];
        return answer;
    }
}
cs

n원을 만드는 방법의 수는 기존 n원을 만드는 방법의 수 + (n-money)원을 만드는 수이다.

 

초기     1 0 0 0 0 0
n = 1    1 1 1 1 1 1
n = 2    1 1 2 2 3 3
n = 5    1 1 2 2 3 4

0열은 자기 자신의 money만을 사용할 때를 위해 1로 설정한 것이다.

 

참고 사이트 : https://tosuccess.tistory.com/57

'Programmers > Level3' 카테고리의 다른 글

섬 연결하기  (0) 2021.09.14
멀리 뛰기  (0) 2021.09.14
풍선 터트리기  (0) 2021.09.13
[1차] 추석 트래픽  (0) 2021.09.08
길 찾기 게임  (0) 2021.09.07