이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 2293(동전 1) - Python(파이썬) - 다이나믹

  • 2022.05.29 21:57
  • [백준] Python,Java로 풀기📖/다이나믹
    반응형
     

    2293번: 동전 1

    첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

    www.acmicpc.net

    풀이방법
    ① dp[i] : i를 만들 수 있는 경우의 수라고 가정
    ② 처음부터 n가지 종류의 동전을 하는 것이 아니라 한개부터 n가지의 종류의 동전으로 늘려간다.
    ③ 동전의 종류를 늘려갈 때 0원부터 시작해서 k원까지 만들 수 있는 경우의 수를 구한다. 
    점화식 : dp[j ] = dp[j] +dp[j-i]

    ex ]

    [ 1 ]로 만들 수 있는 경우의 수는 0원부터 k원까지 1가지 일 것이다.
    [ 1,2 ]로 만들 수 있는 경우의 수를 구할 때 6원일 때의 값을 구한다하면 dp[6] = dp[6]+dp[6-2] 
    이런식으로 구하는데 왜냐하면 6원은 오직 1원만 가지고 6을 만든 가지수(dp[6]) 4원에서 2를 더하면 6이 만들어지기때문에 dp[4]의 경우 1원과2원을 합쳐서 만든 경우의 수이다. 따라서 이 둘을 더하게 되면 1원만 가지고 만든 경우의 수와 1,2원을 가지고 만든 경우의 수를 모두 가지게 된다. 

    이걸 코드로 돌려서 표현을 해보면1) [ 1 ]로 만들 수 있는 경우의 수

    2) [ 1,2 ] 로 만들 수 있는 경우의 수

    3) [ 1,2,3 ]으로 만들 수 있는 경우의 수

    import sys
    n,k = map(int,sys.stdin.readline().split())
    array=[int(sys.stdin.readline()) for i in range(n)]
    array.sort()
    
    dp=[0]*(k+1)
    #0을 만들 수 있는 경우의 수는 항상 1개이다-> 아무것도 없을 때 이므로
    dp[0]=1
    
    for i in array:
        # k=0일때의 값을 제외해야하므로 range는 1부터 시작한다.
        for j in range(1,k+1):
            if j>=i:
                dp[j]=dp[j]+dp[j-i]
            print(dp)
        print()
    
    print(dp[k])

     

     

    반응형

    '[백준] Python,Java로 풀기📖 > 다이나믹' 카테고리의 다른 글

    백준 2096(내려가기) - Python(파이썬) - 다이나믹 프로그래밍,메모리 초과  (0) 2022.05.30
    백준 2502(떡 먹는 호랑이) - Python(파이썬) - 다이나믹프로그래밍  (0) 2022.05.30
    백준 1309(동물원) - Python(파이썬),Java(자바) - 다이나믹  (0) 2022.05.28
    백준 18353(병사 배치하기) - Python(파이썬) - LIS,다이나믹  (0) 2022.05.26
    백준 11053( 가장 긴 증가하는 수열 ) - Python(파이썬),Java(자바)- 다이나믹(LIS)  (0) 2022.05.26

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 2096(내려가기) - Python(파이썬) - 다이나믹 프로그래밍,메모리 초과

      백준 2096(내려가기) - Python(파이썬) - 다이나믹 프로그래밍,메모리 초과

      2022.05.30
    • 백준 2502(떡 먹는 호랑이) - Python(파이썬) - 다이나믹프로그래밍

      백준 2502(떡 먹는 호랑이) - Python(파이썬) - 다이나믹프로그래밍

      2022.05.30
    • 백준 1309(동물원) - Python(파이썬),Java(자바) - 다이나믹

      백준 1309(동물원) - Python(파이썬),Java(자바) - 다이나믹

      2022.05.28
    • 백준 18353(병사 배치하기) - Python(파이썬) - LIS,다이나믹

      백준 18353(병사 배치하기) - Python(파이썬) - LIS,다이나믹

      2022.05.26
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 코딩테스트준비
    • TiL
    • 백준
    • 항해99
    • 프로그래머스
    • 99클럽
    • 티스토리챌린지
    • 오블완

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 쿄코코. Designed by Fraccino.

    티스토리툴바