[백준]2293번 동전1 - python 파이썬

2024. 7. 19. 15:57·코딩테스트/백준

문제

 

 

 

처음 이 문제를 접했을 때 어떤식으로 구현을 해야할 지 전혀 감이 잡히지 않아서 구글링의 도움을 받았다.

 

이 문제는 dp 알고리즘을 이용해서 구현해주면 되는데 점화식을 만들어 내는게 쉽지 않았다.

 

동전이 담긴 coins 리스트를 돌면서  i원을 만들기 위한 경우의 수를 dp[i] 따라 저장해주는 방식으로 문제를 해결해주면 된다

이를 식으로 세우면

 

 

dp[i] = dp[i] + dp[i-c]  이렇게 되는데 이는

 

DP [4] (1,2 원으로 4를 만드는 경우의 수) = DP[4] (원래 1원으로만 4를 만드는 경우의 수) + DP[4 - 2] (1, 2 원으로 2를 만드는 경우의 수, 여기서 2원만 추가해주면 4가 되기때문)

 

 

이렇게 이해해주면 된다

 

코드

n, k = map(int, input().split())
coins = [int(input()) for _ in range(n)]
dp = [0] * (k+1)

#k원 짜리 동전으로 k원을 만드는 경우의 수 추가
dp[0] = 1


for c in coins:
    for j in range(c,k+1):
        dp[j] = dp[j] + dp[j-c]

print(dp[k])

 

 

dp 는 항상 식을 세우는 부분이 가장 어려운 것 같다....

 

많이 연습이 필요한 부분이다

'코딩테스트 > 백준' 카테고리의 다른 글

[백준]14891번 톱니바퀴 -python 파이썬  (2) 2024.10.12
[백준] 2294번 동전2 -python 파이썬  (1) 2024.10.12
[백준] 2493번 탑 - python 파이썬  (2) 2024.10.06
[백준] 1107 리모컨 - python 파이썬  (1) 2024.07.22
[백준]1916번 최소비용 구하기 -python 파이썬  (2) 2024.07.22
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 2294번 동전2 -python 파이썬
  • [백준] 2493번 탑 - python 파이썬
  • [백준] 1107 리모컨 - python 파이썬
  • [백준]1916번 최소비용 구하기 -python 파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    UnionFind
    코딩테스트
    EC2
    파이썬
    github
    신한투자증권
    kdt교육
    백트래킹
    깃허브
    MSA
    AWS
    그리디
    백엔드
    K디지털트레이닝
    알파코
    알고리즘
    알파코캠퍼스
    프디아
    bastion host
    IT기획
    Java
    BFS
    백준
    spring
    python
    프로그래머스
    프로디지털아카데미
    투포인터
    코테
    다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준]2293번 동전1 - python 파이썬
상단으로

티스토리툴바