danbibibi
article thumbnail
Published 2022. 12. 7. 08:12
BOJ 2293번: 동전 1 문제 풀이/백준

문제

문제 바로가기> BOJ 2293번: 동전 1

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

풀이

2차원 배열로 풀면 메모리 초과가 발생하므로 1차원 배열로 풀어야 한다.

i원 동전을 사용하여 j원을 만들 때 j-coin[i]의 누적합만 알면 되므로 1차원 배열로 풀 수 있다.

 

#include<iostream>
#define MAX 101
#define MAX_K 10001
using namespace std;

int n, k;
int coin[MAX], dp[MAX_K];

void input(){
    cin >> n >> k;
    for(int i=1; i<=n; i++) cin >> coin[i];
}

void solution(){ // dp[j] : 가치 j를 만들 수 있는 경우의 수
    for(int i=1; i<=n; i++){
    	if(coin[i] <= k) dp[coin[i]]++;
        for(int j=coin[i]+1; j<=k; j++) dp[j] += dp[j-coin[i]];
    } 
    cout << dp[k];
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    input();
    solution();
}

 

 

 

 

'문제 풀이 > 백준' 카테고리의 다른 글

BOJ 1697번: 숨바꼭질  (0) 2022.12.13
BOJ 2294번: 동전 2  (0) 2022.12.09
BOJ 10021번: Watering the Fields  (0) 2022.12.04
BOJ 9465번: 스티커  (0) 2022.12.03
BOJ 2178번: 미로 탐색  (1) 2022.12.02
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로