리주의 프로그래밍 공부

[2293] 동전 1 본문

알고리즘 공부(백준)

[2293] 동전 1

Leezu_ 2021. 1. 4. 18:51

동적 프로그래밍 문제

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

	// 첫줄에서 n과 k 입력 받기 위한 임시 String배열 line
		String[] line = br.readLine().split(" ");
		int n = Integer.parseInt(line[0]);
		int k = Integer.parseInt(line[1]);
        // 동전의 가치를 저장하기 위한 int배열 coin
		int[] coin = new int[n];
        // 동적프로그래밍을 사용하기위한 int배열 dp
		int[] dp = new int[k + 1];
		for (int i = 0; i < n; i++) {
			coin[i] = Integer.parseInt(br.readLine());
		}
        // 초기값 설정
		dp[0] = 1;
        // 동전의 수만큼
		for(int i=0; i<n; i++) {
        	// 1부터 k까지 coin[i]를 사용해서 만들 수 있는 가짓수 찾기
			for(int j=1; j<=k; j++) {
				if(j - coin[i] >= 0) {
					dp[j] = dp[j] + dp[j - coin[i]];
				}
			}
		}
		System.out.println(dp[k]);
	}
}

 

다른 사람의 아이디어를 참고해서 풀었다.

아직도 점화식 세우는데 익숙치않다.

'알고리즘 공부(백준)' 카테고리의 다른 글

[9663] N-Queen  (0) 2021.03.18
[2606] 바이러스  (0) 2021.01.13
[11286] 절댓값 힙  (0) 2021.01.02
[11279] 최대 힙  (0) 2021.01.02
[1920] 수 찾기  (0) 2020.12.28