[Baekjoon] 2294. 동전 2

2025. 2. 13. 11:11·코딩테스트/Python
728x90
반응형

🔗 Problem Link

https://www.acmicpc.net/problem/2294


❔Thinking

  • n개 종류의 동전을 활용해서, k원을 만드는 최소한의 동전 개수를 반환한다. k원을 만들 수 없다면 -1을 반환한다.
  • 1<= n <= 100, 1<= k <= 10,000

💻Solution

1. DP를 활용한 풀이

import sys

input = sys.stdin.readline
n, k = map(int, input().split())
coins = []
for _ in range(n):
    coins.append(int(input().rstrip()))
coins.sort()
answer = [float('inf') for _ in range(k+1)]
answer[0] = 0
for i in range(1, k+1):
    for coin in coins:
        if i-coin >= 0:
            answer[i] = min(answer[i], answer[i-coin]+1)
print(answer[k] if answer[k]!=float('inf') else -1)

 

2. BFS를 활용한 풀이

import sys
from collections import deque

def coin_change_bfs(N, K, coins):
    queue = deque([(0, 0)])
    visited = set([0])

    while queue:
        current, count = queue.popleft()
        
        if current == K:
            return count

        for coin in coins:
            next_amount = current + coin
            if next_amount <= K and next_amount not in visited:
                visited.add(next_amount)
                queue.append((next_amount, count + 1))
    return -1

N, K = map(int, sys.stdin.readline().split())
coins = [int(sys.stdin.readline().strip()) for _ in range(N)]

print(coin_change_bfs(N, K, coins))

🗝️keypoint

  1. DP를 활용하는 경우 : 각 동전의 가치를 더해서 현재 가치를 만들 수 있는 최소값을 갱신한다.
  2. BFS를 활용하는 경우 : 모든 금액을 만드는 방법을 확인하고, k인 경우 반환한다.
저작자표시 (새창열림)

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

[Beakjoon] 1922. 네트워크 연결  (0) 2025.02.16
[Programmers] Level 2. 유사 칸토어 비트열  (0) 2025.02.14
[Programmers] Level 2. 도넛과 막대 그래프  (0) 2025.02.12
[Programmers] Level 2. 숫자 블록  (0) 2025.02.11
[Baekjoon] 2565. 전깃줄  (0) 2025.02.11
'코딩테스트/Python' 카테고리의 다른 글
  • [Beakjoon] 1922. 네트워크 연결
  • [Programmers] Level 2. 유사 칸토어 비트열
  • [Programmers] Level 2. 도넛과 막대 그래프
  • [Programmers] Level 2. 숫자 블록
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 2294. 동전 2
상단으로

티스토리툴바