ABOUT ME

Today
Yesterday
Total
  • 2293. [Python]동전 1
    Python_알고리즘/Gold V 2024. 9. 5. 05:43

    1. 문제

     

     

    2. 접근 방법

     

    • 시간 제한: 0.5초
    • 메모리 제한: 4MB
    • DP

     

    3. 파이썬 코드

     

    import sys
    
    input = sys.stdin.readline
    
    n, k = map(int,input().split())
    # 동전 저장 리스트
    coins = []
    
    # 동전 저장
    for _ in range(n):
        coins.append(int(input()))
    # 동전 정렬
    coins.sort()
    
    dp = [0] * (k+1)
    # 0원을 만드는 방법도 1개
    dp[0] = 1
    # 동전 반복 진행
    for coin in coins:
        # 초기값 동전부터 1씩 더해나감
        for i in range(coin,k+1):
            # i번째 동전의 경우 i-coin 한 값을 더해나가야함 동전이 계속 값이 바뀌기 때문에
            dp[i] += dp[i-coin]
    
    print(dp[-1])

     

    4. 문제를 풀고난 후 생각

     

    • 내가 생각하기엔 DP의 기본적인 문제였고, 실제 동전을 인풋을 받은 후 초기 dp 값을 k+1 까지 설정해준 후 dp[0] 을 1로 초기 세팅을 진행했다.
    • 0 원을 만드는 방법은 0원을 넣는 것이기 때문에 초기 값을 1로 설정해줬다.
    • 동전이 들어오는 크기가 순서가 없기 때문에 작은 동전부터 오름차순으로 sort 처리를 해줬다.
    • 이후 동전 한개씩 반복문을 진행하며 동전 인덱스 - 현재 동전 을 빼준 dp 값을 계속해서 갱신해줬다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • DP(다이나믹 프로그래밍)

    'Python_알고리즘 > Gold V' 카테고리의 다른 글

    14719. [Python]빗물  (0) 2024.09.30
    2294. [Python]동전 2  (1) 2024.09.05
    6581. [Python]HTML  (0) 2024.08.26
    2866. [Python]문자열 잘라내기  (0) 2024.08.19
    2866. [Python]문자열 잘라내기  (0) 2024.08.13

    댓글

Designed by Tistory.