[백준] 2294번 동전2 -python 파이썬

2024. 10. 12. 01:52·코딩테스트/백준

문제

 

 

 

이 문제에 대한 해결방법을 계속 고민하다 보면 dp를 사용해 주어야 할 것같은 느낌이 온다.

이전의 평범한 배낭 문제와 비슷한데 그거보다 쉬운버전이라고 생각해주면 된다

 

 

일단 dp 문제 이기 때문에 점화식을 세워 주어야 하는데 우리가 구해야하는 것은 최소가 되는 동전의 개수라는 것을 명심해서

이것을 기준으로 dp를 작성해주면 된다.

 

 

일단dp를 초기 설정할 때 k가 10000이하 이므로 가장 많은 동전의 개수인 10001로 초기화 해주거나 양의 무한대로 값을 설정해주어도 된다.

 

그리고 원소의 개수는 k+1로 해주면 된다. 왜냐하면 가치가 i 일때 최소가 되는 동전의 개수를 구해줄 것이므로 k가치 까지의 dp를 구해주면 되기 때문이다.

 

inf = float('inf')
dp = [inf] * (k+1)

 

 

 

그리고 점화식을 세우는 데 dp[i] 즉,  i 가치일 때 최소가 되는 동전의 개수이다. 

문제에 주어진 예시로 설명해보자면

 

dp[1] = 1 일때 dp[6] = min(1원짜리동전 1개 + 1원짜리동전5개의 총 동전 개수 ,1원짜리 동전 1개 + 5원짜리 동전 1개의 총 동전 개수) 이렇게 된다는 것을 알 수 있다.

이를 식으로 정리 하면 dp[i] = min(dp[i],dp[i-현재코인의 가치]+1)

 

 

전체코드

n, k =map(int, input().split())
coins = [int(input()) for _ in range(n)]
#중복 제거
coins = list(set(coins))
coins.sort()
inf = float('inf')
dp = [inf] * (k+1)
dp[0] = 0

for c in coins:
    #현재 동전보다 작은 값은 갱신되지 않으므로 현재 동전의 값부터 시작
    for i in range(c,k+1):
        dp[i] = min(dp[i],dp[i-c]+1)



#불가능한 경우
if dp[k]>10000:
    print(-1)
else:
    print(dp[k])

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

[백준] 2565번 전깃줄 - python 파이썬  (1) 2024.10.14
[백준]14891번 톱니바퀴 -python 파이썬  (2) 2024.10.12
[백준] 2493번 탑 - python 파이썬  (2) 2024.10.06
[백준] 1107 리모컨 - python 파이썬  (1) 2024.07.22
[백준]1916번 최소비용 구하기 -python 파이썬  (2) 2024.07.22
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 2565번 전깃줄 - python 파이썬
  • [백준]14891번 톱니바퀴 -python 파이썬
  • [백준] 2493번 탑 - python 파이썬
  • [백준] 1107 리모컨 - 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바