인프런 커뮤니티 질문&답변

코테님의 프로필 이미지
코테

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

7-H

7-H 문제 질문

해결된 질문

작성

·

185

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요. 큰돌 강사님

 

문제를 보면

"사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다."

라는 조건이 있는데,

선생님이 제공해주신 풀이에서
어떻게 순서가 같은지 체크가 되는건지 이해가 되지 않아서요.

혹시 설명해주실 수 있나요??

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.

>> 이거는 1 2 1이나 1 1 2가 같은 의미라는 의미입니다.

즉, 순서를 신경쓰지 않는 부분입니다. 만약 순서가 상관있다면 순열에 관한 코드가 들어가야 합니다.

 

어떻게 순서가 같은지 체크가 되는건지 이해가 되지 않아서요.

>> 음.. dp 가 쌓이는 로직을 다시 볼게요.

 

1인 동전

dp[1] = 1

dp[2] = 1

dp[3] = 1

dp[4] = 1

여기서.

2인 동전 추가가 되었을 때

dp[2] = 2가 됩니다.

1 * 2와 2하나 두개의 경우의 수가 되는 것이죠.

 

자 순서가 상관있을 법한.

dp[3]을 볼게요.

dp[3] = 1에서

dp[3] = 1 + dp[1]이 되어

dp[3] = 2가 됩니다.

이 의미는

dp[3]을 1로만 채우는 경우의 수 + dp[1]에서 2를 쓰는 경우의 수가 됩니다.

즉,

1 1 1 과 (1 2 또는 2 1) 이 되게 됩니다.

이 의미 자체가 순서와 상관없이 동전을 채우는 코드라고 보시면 됩니다.

        for(int j = temp; j <= k; j ++){  
            dp[j] += dp[j - temp]; 
        }


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

코테님의 프로필 이미지
코테

작성한 질문수

질문하기