Recent Posts
Recent Comments
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 시뮬레이션
- 비주얼 스튜디오 코드
- Visual Studio Code
- Graph
- baek joon
- 넓이 우선 탐색
- sw expert academy
- 춤
- 백준
- filezila server
- 삼성 알고리즘
- 배틀
- cube sound
- 동적계획법
- 알고리즘
- dynamic programming
- ubuntu
- BOJ
- 다이나믹 프로그래밍
- dp
- dfs
- Algorithm
- simulation
- 그래프
- 아파치
- apache
- 공연
- BFS
- C++
- 우분투
Link
댄코 - 댄싱코딩
[2293] 동전1 본문
이문제는 처음에 이상한 점화식 세우다가 안돼서 다시푼 문제다.
using namespace std;
int main(){
int N[2];
int val[101];
int d[10001] ={};
scanf("%d %d",&N[0],&N[1]);
for(int i = 0;i<N[0];i++){
scanf("%d",&val[i]);
}
d[0] = 1;
for(int i = 0;i<N[0];i++){
for(int j = 0;j<=N[1];j++){
if(j>=val[i])
d[j] += d[j-val[i]];
}
}
printf("%d\n",d[N[1]]);
}
우선 코인 수만큼 반복문을 돌고 그 안에서 그 코인의 값으로 만들 수 있는 숫자를 1부터 N[1]까지 d[j]에 저장한다.
이때 d[j]는 j에서 코인값을 뺀 d[j-val[i]]의 값을 더해야한다. d[j-val[i]]에 저장된 경우의 수에 현재 코인을 추가하기만 하면
숫자j를 만들 수 있기때문이다.
'코딩 > 알고리즘' 카테고리의 다른 글
[10844] 쉬운 계단수 (0) | 2017.07.01 |
---|---|
[2156] 포도주 시식 (0) | 2017.07.01 |
[9251] LCS (0) | 2017.07.01 |
[2965] 캥거루 세마리 (0) | 2017.06.30 |
[1463] 1로 만들기 (0) | 2017.06.30 |
Comments