이번에 풀 문제는 동전 1 이다.
해당 문제에 대한 링크는 아래와 같다.
https://www.acmicpc.net/problem/2293
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
1. 문제 확인
2. 문제 풀이
각각의 경우의 수에서 중복된 경우의 수를 생각하는 경우였다.
예를 들면 4의 경우의 수는
4점을 만들기 위해 2점까리 동전을 사용하였을 때, 4-2를 하면 2가 나온다.
이때 나오는 2의 경우는 2이므로 2를 적어주는 논리이다.
from sys import stdin
n, k = map(int, stdin.readline().split())
coin = []
for _ in range(n):
coin.append(int(stdin.readline()))
count_list = [0] * (k + 1)
# x원짜리 동전 하나로 x원을 만드는 경우의 수 = 1
count_list[0] = 1
for i in coin:
for j in range(i, k + 1):
count_list[j] += count_list[j - i]
print(count_list[k])
'security > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 23단계 동적 계획법 2- 파일 합치기(11066번) Python (0) | 2021.06.01 |
---|---|
백준 알고리즘 22단계 우선 순위 큐 - 큐의 절댓값 힙(11286번) Python (0) | 2021.05.25 |
백준 알고리즘 21단계 이분 탐색 - 가장 긴 증가하는 부분 수열2 (12015번) Java (0) | 2021.05.25 |
백준 알고리즘 20단계 분할 정복- 행렬 곱셈 (2740번) Java (0) | 2021.05.18 |
백준 알고리즘 19단계 큐, 덱- 요세푸스 문제 0 (11866번) Python (0) | 2021.05.04 |
댓글