[BOJ, Python] 2294번_동전 2

2026. 7. 30. 01:49·Algorithm/Algorithm

이 글은 Velog에서 이전한 글입니다. Velog 원문 보기

백준 2294번_동전

큰 어려움 없이 푼 문제이다. 개인적으로 이 문제보다 DP 실버1 문제들이 더 어려웠던거 같다.

n가지 동류의 동전, 가치의 합이 k원이 되도록, 동전의 개수가 최소 이 3가지를 보면 해당 문제를 DP로 풀어야하는 것은 금방 알 수 있다.

동전 종류의 갯수 n과 타겟이 되는 k의 범위를 보면 1<=n<=100, 1<=k<=10000 이므로 머리에 떠오르는대로 단순하게 풀어도 시간 초과를 발생하지 않을거라고 생각해서 아래와 같은 과정으로 문제를 접근했다.

  1. i원을 만들기 위해 필요한 동전의 갯수를 저장할 리스트를 만든다. (name: dp)
  2. 리스트 원소의 초기값은 int(1e9)로 매우 큰 값을 주고, 리스트 원소의 수는 n의 최댓값이 100,000이기 때문에 100,001개로 한다.
  3. 탑-다운 방식으로 dp 리스트를 돌면서 i번째 dp의 값이 0이 아닌 경우 i+모든 동전의 가치(n가지 종류의 동전의 정보들)를 더해 min으로 비교해 dp(i+(동전의 가치))에 저장한다.

이 문제는 글로 보는 것보단 코드를 보는 것이 이해가 쉬울 것 같다.

풀이 코드

import sys
input = lambda: sys.stdin.readline().rstrip()

n, k = map(int, input().split())
dp = [int(1e9)]*(100001) # i원을 만들 때 사용되는 동전의 갯수
coin = [] # n개 동전의 가치를 저장할 리스트
for _ in range(n):
    c = int(input())
    coin.append(c)
    dp[c] = 1

s = min(coin) # 시작점

for i in range(s, k+1):
    if dp[i] == 0: # dp[i]가 0이라면 i원은 동전의 조합으로 만들지 못하는 액수이기에 건너뛰기
        continue

    for c in coin: # 모든 동전을 돌며 동전 갯수의 최솟값 찾기
        if (i+c)<=k:
            dp[i+c] = min(dp[i]+1, dp[i+c])

if dp[k] == int(1e9): # k원을 만들지 못하는 경우 -1 출력
    print(-1)
else:
    print(dp[k])

결과

'Algorithm > Algorithm' 카테고리의 다른 글

[BOJ, Python] 백준 3151번_합이 0  (0) 2026.07.30
[BOJ, python] 20922번_겹치는 건 싫어  (0) 2026.07.30
[BOJ, Python] 1005번_ACM Craft  (0) 2026.07.30
[BOJ, Python] 11054번_가장 긴 바이토닉 부분 수열  (0) 2026.07.30
[Programmers, Python] Lv2. 피로도  (0) 2026.07.29
'Algorithm/Algorithm' 카테고리의 다른 글
  • [BOJ, Python] 백준 3151번_합이 0
  • [BOJ, python] 20922번_겹치는 건 싫어
  • [BOJ, Python] 1005번_ACM Craft
  • [BOJ, Python] 11054번_가장 긴 바이토닉 부분 수열
pp8817
pp8817
공부한 내용, 개발 관련 지식, 트러블 슈팅 등을 기록합니다. 이전 블로그: https://velog.io/@pp8817/posts
  • pp8817
    끄적이는 개발 log
    pp8817
  • 전체
    오늘
    어제
    • 분류 전체보기 (273)
      • Project (71)
        • 척척학사 (29)
        • Book (23)
        • Saynow (3)
        • YAPP 27기 (4)
        • 나의 작은 프로젝트 (10)
        • Landit (2)
      • Backend (88)
        • Spring (13)
        • Spring MVC (13)
        • Spring Security (4)
        • JPA (26)
        • Database (19)
        • HTTP·Web (13)
        • Architecture (0)
      • Language·CS (59)
        • Java·Kotlin (5)
        • CS Interview (17)
        • Backend Interview (5)
        • Concepts (32)
      • Algorithm (25)
        • Algorithm (24)
        • 소마 알고리즘 스터디 (1)
      • Infra (8)
      • Troubleshooting (11)
      • Retrospective (6)
      • Etc (5)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Spring MVC
    Algorithm
    Book
    java
    척척학사
    object
    BOJ
    CS Interview
    HTTP WEB 기본 지식
    Python
    Project
    게시판
    http
    트러블슈팅
    OS
    interview
    나의 작은 프로젝트
    Spring
    jpa
    개념 정리!
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
pp8817
[BOJ, Python] 2294번_동전 2
상단으로

티스토리툴바