suleesulee
suleesulee
suleesulee
전체 방문자
오늘
어제
  • 분류 전체보기 (39)
    • Personal (7)
      • 개발자sulee (2)
      • 회고록 (1)
      • 여행 (0)
    • Computer Science (31)
      • JAVA (4)
      • Python (0)
      • Html&CSS (0)
      • Spring (1)
      • JPA (1)
      • MSA (12)
      • Algorithm (10)
      • DevOps (0)
      • Go (1)
      • Swift (1)
      • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개발자 sulee의 블로그입니다.

인기 글

태그

  • SOA
  • 개발자
  • 이직
  • MSA
  • 네이버
  • 이직뽀개기
  • Monolithic
  • 전문연
  • 라인
  • 나의 재취업 도전기
  • 카카오
  • 회고
  • 백엔드
  • 전문연구요원

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
suleesulee

suleesulee

Computer Science/Algorithm

[리트코드]322. Coin Change

2021. 9. 7. 20:40
class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        dp = [1e9] * (amount + 1)
        dp[0] = 0
        
        for coin in coins:
            for i in range(coin, amount + 1):
                dp[i] = min(dp[i], dp[i - coin] + 1)
                
        return dp[amount] if dp[amount] != 1e9 else -1

사용언어 Python3

난이도    Medium

 

문제풀이과정

해당 문제를 보자마자 Dynamic..아.. DP를 떠올렸다.. 가장 대중적인 DP문제라고 생각한다.

만들어야하는 값을 DP 배열로 만든다. 0은 포함하지 않기에 +1

내가 가진 코인으로 해당 값을 만드는데 최소한의 코인이 몇개 필요한지 구한다.

먼저 1코인으로 값11을 만든다 생각하면 dp 배열은 1,2,3,4....11로 구성될것이다.

다음에 가진 코인이 2코인이라면 값 11을 만들때 dp배열은 1,1,2,2,...6 일 것이고

이것을 가진 코인 모두와 반복시킨다. 그리고 해당 배열의 11번째 값을 반환하고

11번째 값이 초기 값에서 변경된 점이 없다면 -1을 리턴한다.

저작자표시 비영리 변경금지 (새창열림)

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

[리트코드]172. Factorial Trailing Zeroes  (0) 2021.09.07
[리트코드]45. Jump Game II  (0) 2021.09.06
[리트코드]1854. Maximum Population Year  (0) 2021.09.06
[리트코드]1002. Find Common Characters  (0) 2021.09.06
[리트코드]740. Delete and Earn  (0) 2021.09.03
    'Computer Science/Algorithm' 카테고리의 다른 글
    • [리트코드]172. Factorial Trailing Zeroes
    • [리트코드]45. Jump Game II
    • [리트코드]1854. Maximum Population Year
    • [리트코드]1002. Find Common Characters
    suleesulee
    suleesulee
    IT Engineer, SW Developer, Traveler

    티스토리툴바