9084 > DP> #35 동전

2020.04.07 21:47

졸리운_곰 조회 수:101

 

 9084 > DP> #35 동전

 

동전

 

문제:https://www.acmicpc.net/problem/9084

알고리즘 종류 : DP

 

 

 

1. 문제 설명

 

우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는 1원짜리 30개 또는 10원짜리 2개와 5원짜리 2개 등의 방법이 가능하다.

동전의 종류가 주어질 때에 주어진 금액을 만드는 모든 방법을 세는 프로그램을 작성하시오.

 

 

2. 나의 코드

 

 

- Weight or Value 가 배열의 인덱스가 될 수 있다.

-  점화식 D[i] = D[i] + D[i - a[j]];

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

- 배열 D는 i 원을 가질때, 동전을 집을 수 있는 모든 경우의 수

- 배열 a는 각 동전의 가치

- 주어진 동전이 {1,5,10}이 있을때,

- 초기 배열 D는 0으로 초기화 하자.

- D[30] 가 1원만 가지고 30원을 만들 수 있는 모든 경우의 수라 가정하자. 이때, 10원을 1개 추가하여, 여러개의 1원과 10원 1개를 추가하여 30을 만든다고 한다면,

- D[30] = D[30](원래 1원만을 가지고 만들 수 있는 경우의 수) + D[30 - 10](10원을 추가 했으니 20원을 만들 수 있는 경우의 수가 된다.)

- D[0] = 1이다. D[1 - 1] = 해당 동전의 가치를 만들 수 있는 경우의 수는 항상 1개이므로. => D[1] = D[1] + D[1-1];

 

 

import java.util.*;

class Main{
	public static void main(String [] args){
		Scanner sc = new Scanner(System.in);
		int T;
		int N;
		int [] cost;
		int val;
		int [] answer;

		T = sc.nextInt();
		answer = new int[T];

		for(int i=0;i<T;i++){
			N= sc.nextInt();
			cost = new int[N];
			for(int j=0;j<N;j++){
				cost[j]=sc.nextInt();
			}
			val = sc.nextInt();
			int [] d = new int[val+1];
			d[0] = 1;
			for(int k=0;k<N;k++){
				for(int h=cost[k];h<val+1;h++){
					d[h] = (d[h] + d[h - cost[k]]);
				}
			}
			answer[i] = d[val];
		}
		for(int i=0;i<answer.length;i++){
			System.out.println(answer[i]);
		}
	}
}

 

 

3. 보완

 

DP는 너무 여렵다.

 

[출처] https://dreamhollic.tistory.com/entry/BaekJoon-%EB%B0%B1%EC%A4%80-9084-DP-34-%EB%8F%99%EC%A0%84?category=676734

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
918 1932 > DP > #37 정수 삼각형 졸리운_곰 2020.04.12 74
917 Programmers > 2018 서머코딩 > #36 예산 졸리운_곰 2020.04.12 66
» 9084 > DP> #35 동전 졸리운_곰 2020.04.07 101
915 BaekJoon _ 백준 1149 > DP> #34 RGB 거리 졸리운_곰 2020.04.02 93
914 BaekJoon _ 백준 1026 > 탐색> #33 보물 졸리운_곰 2020.04.02 90
913 Programmers > 연습문제 > #32 N-Queen 졸리운_곰 2020.04.01 61
912 Programmers > 연습문제 > #31 2 x n 타일링 졸리운_곰 2020.04.01 69
911 List of freely available programming books 졸리운_곰 2020.03.31 184
910 How to do pointers in Visual Basic file 졸리운_곰 2020.03.26 76
909 Linked List implementation in Visual Basic 졸리운_곰 2020.03.24 50
908 Programmers > 스택/큐(Stack/Queue) > #30 기능개발 졸리운_곰 2020.03.23 65
907 Programmers > #28 winter recruit > #2 [JAVA] 졸리운_곰 2020.03.23 47
906 Programmers > 깊이/너비 우선 탐색(DFS/BFS) > #27 타겟 넘버 [JAVA] 졸리운_곰 2020.03.09 65
905 Programmers > 완전탐색 > #26 소수찾기(level 2) [JAVA] 졸리운_곰 2020.03.09 69
904 Programmers > #25 winter recruit > #1 [JAVA] 졸리운_곰 2020.03.08 47
903 Programmers > Level 1 > #24 소수찾기 [Python] 졸리운_곰 2020.03.08 65
902 Programmes > #23 문자열 내 마음대로 정렬하기 [Python] 졸리운_곰 2020.03.08 61
901 Programmers > Hash > #22 위장 [JAVA] 졸리운_곰 2020.03.07 58
900 Programmers > Sort > #21 H-Index [JAVA] 졸리운_곰 2020.03.07 60
899 [Programmers] #20 라면공장 [JAVA] 졸리운_곰 2020.03.06 83
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED