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
- github
- 그래프탐색
- GC
- deque
- BFS
- 회고
- Greedy
- 문제풀이
- Python
- 백준
- 적정 스레드
- 이진탐색
- 면접복기
- 마크다운
- 몬티홀
- 정수론
- Markdown
- DP
- 분할정복
- 빌더패턴
- 프로세스
- g1gc
- 배열 돌리기1
- GarbageCollector
- 브루트포스
- 그래프 탐색
- 구현
- Stack
- 그리디
- springboot
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 |