Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- 그래프탐색
- 문제풀이
- springboot
- GarbageCollector
- 정수론
- 그리디
- 브루트포스
- Stack
- 프로세스
- Python
- 백준
- 이진탐색
- Markdown
- GC
- Greedy
- 마크다운
- 회고
- DP
- 적정 스레드
- 배열 돌리기1
- 분할정복
- github
- 면접복기
- g1gc
- 빌더패턴
- 그래프 탐색
- 구현
- BFS
- 몬티홀
- deque
Archives
- Today
- Total
FeelingXD
[백준 - 2293] 동전 1 🟡 본문
❓ Problem

🤔 How
기본적인 DP 문제중 하나이다.
입력받은 target이 되도록하는 방법의 갯수를 구해야한다. dp테이블을 어떻게 접근해야할까 .
- dp 테이블 접근하기
- 이 문제의 경우 각 액수에 맞게 가능한 방법으로 dp 테이블을 구성해주었다.
- dp[n] = n이 될수있는 조합의 방법수
- 점화식
- dp[i]+=dp[i-coin] = i의 액수는 현재 사용할 코인이전의 방법가짓수에 이번 코인을 사용한것과 같다 즉 dp[i-coin] + coin 은 dp[i] 가 되므로 dp[i] 에는 현재 dp[i]에 dp[i-coin]를 더해줌으로서 방법을 추가한다.
❗ Solve
# 동전 1
import sys
input =sys.stdin.readline
def solution():
n,k=map(int,input().split())
coins=[]
for _ in range(n):
coins.append(int(input()))
coins.sort()
dp=[0]*(k+1)
dp[0]=1
for coin in coins:
for i in range(coin,k+1):
dp[i]+=dp[i-coin]
print(dp[-1])
pass
if __name__=="__main__": # 실행되는 부분
solution()
pass
'프로그래밍 > 문제풀이' 카테고리의 다른 글
| [백준-2240] 자두나무 🍒 (0) | 2024.01.12 |
|---|---|
| [백준-1107] 리모컨 ✨ (0) | 2024.01.11 |
| [백준 - 14940] 쉬운 최단거리 🐢 (0) | 2024.01.02 |
| [백준- 2343] 기타레슨 🎸 (0) | 2023.12.31 |
| [백준-14501] 퇴사 👀 (0) | 2023.12.30 |