동적 프로그래밍을 사용하여 의도하지 않은 사전 변경과 같은 일반적인 함정을 다루는 Python의 코인 변경 문제를 효율적으로 다루는 방법을 알아보십시오. ---이 비디오는 https://stackoverflow.com/q/68149114/에 대한 질문을 기반으로합니다. 사용자 'random'(https://stackoverflow.com/u/12984137/)과 https://stackoverflow.com/a/68150207/에 의해 요청됩니다. https://stackoverflow.com/u/5459839/) 'Stack Overflow'웹 사이트. 이 훌륭한 사용자와 StackexChange 커뮤니티 덕분에 공헌에 감사드립니다. 대체 솔루션, 주제, 주석, 개정 기록 등의 대체 솔루션, 최신 업데이트/개발과 같은 원본 콘텐츠 및 더 자세한 내용은 이러한 링크를 방문하십시오. 예를 들어, 질문의 원본 제목은 다음과 같습니다. Coin 변경 문제를 해결할 때 CC BY-SA. BY-SA 4.0 '(https://creativecommons.org/licenses/by-sa/4.0/) 라이센스 및 원본 답변 게시물은'CC Bysa 4.0 '(https://creativecommons.org/licenses/by-sa/4.0/) 라이센스에 따라 라이센스가 부여됩니다. 당신에게 어떤 것이 보이면, vlogize [at] gmail [dot] com에서 저를 보내 주시기 바랍니다. --- 코인 변경 문제 해결 문제 : Python 사전의 의도하지 않은 변화를 피하는 코인 변경 문제는 코딩 인터뷰 및 경쟁 프로그래밍에서 종종 발생하는 알고리즘 설계에서 고전적인 도전입니다. 작업은 간단합니다. 동전 교파 목록과 목표 합계가 주어지면 각 동전을 여러 번 사용하는 옵션과 함께 해당 동전을 사용하여 해당 합계를 형성 할 수있는 모든 조합을 찾으십시오. 예를 들어, 목표 합이 4와 코인 [1, 2, 3]의 경우, 조합에는 [1,1,1,1], [1,1,2], [2,2], [1,3] 등이 포함됩니다. 그러나 동적 프로그래밍과 함께 재귀 전략을 사용하여 솔루션을 구현하려고 할 때 일반적인 문제가 발생합니다. 특히, 의도하지 않은 변화는 사전 내용에서 발생할 수있어 결과가 잘못되었습니다. 이 문제를 효과적으로 해결하는 방법에 대해 더 자세히 살펴 보겠습니다. 제공된 코드 스 니펫의 문제를 이해하면 메모라는 사전을 사용하여 조합을 추적하려고 시도했습니다. 이것은 특정 대상 합계에 대한 이전에 계산 된 조합을 저장하도록 설계되어 효율성을 향상시킵니다. 그러나 특정 실수는 저장된 목록에서 돌연변이로 이어질 수있어 출력이 잘못되었습니다. 파이썬의 돌연변이에 관한 문제는 목록이 변한 객체입니다. 목록이 다른 목록을 참조하는 방식으로 추가 또는 수정되면 예상치 못한 행동으로 이어질 수 있습니다. 돌연변이의 예 : I.append (num)를 사용하면 이미 메모에있는 목록을 참조하면 메모의 항목도 변경됩니다. 따라서 여러 조합은 예상치 못한 값의 변화를 반영합니다. 함수 호출로 코드를 테스트 할 때 잘못된 출력 : [[[이 텍스트 또는 코드 스 니펫을 공개하려면 비디오 참조]] 다음과 같은 잘못된 결과를 얻을 수 있습니다. 적절한 솔루션을 달성하기위한 접근 방식을 수정하기위한 단계 다음 변경 사항에 중점을 두어야합니다. 1. 기존 목록을 변호하는 대신 새 목록을 올바르게 구성하고 동전을 추가 할 때 새 목록을 만듭니다. 업데이트 된 코드 라인은 다음과 같이 읽어야합니다. [[[이 텍스트 또는 코드 스 니펫을 공개하려면 비디오를 참조하십시오]]이 방법으로, 생성 된 각 조합은 이미 메모에 저장된 다른 조합과 독립적입니다. 2. [[0]]을 반환하는 대신 기본 사례 보정, 각 조합에 불필요하게 0을 추가하고, 비어있는 목록을 반환하고, 0의 합을 만들 수있는 한 가지 방법이 있음을 나타내는 빈 목록을 반환합니다. 누적 변화. 4. 순열 제외 순열없이 조합이 필요한 경우 코인을 고려할 때 순서 감각을 유지해야합니다. [[이 텍스트 또는 코드 스 니펫을 공개하려면 비디오를 참조하십시오] 이렇게하면 재귀 통화를 조정해야하며 여전히 사용할 수있는 동전을 지정할 수 있습니다. 최종 솔루션 위에 나열된 수정 사항을 구현하여 코인 변경 문제에 대한 완전한 솔루션은 다음과 같습니다. [[이 텍스트 또는 코드 스 니펫을 공개하려면 비디오 참조] : [[이 텍스트 또는 코드 스 니펫을 공개하려면 비디오를 참조하십시오] 예상되는 정확한 출력을 받아야합니다! 결론 동전 변경 문제는 돌연변이 가능한 물체를 처리하는 데 미묘한 실수가 어떻게 출력에서 주요 불일치로 이어질 수 있는지에 대한 훌륭한 예입니다. 신중한 포인터를 적용하여 목록을 복사하고 동적 프로그래밍 기술을 효율적으로 활용 함으로써이 문제를 효과적으로 해결할 수 있습니다. 행복한 코딘