• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

이해한게 맞는지 잘 모르겠습니다

21.12.02 02:46 작성 조회수 151

1

처음볼땐 풀이가 잘 이해가 안되서 

한 30분정도 그림그려가며 막 보다보니 이런 원리로 굴러가는구나하고 알겠는데

다른 DP문제를 봤을때 이런식으로 점화식을 구할수 있을지가 의문입니다. dp[i - 1][j]는 뭐 그냥저냥 이해한다쳐도

그 뒤에 dp[i - 1][j - w[i] ]+ p[i]같은 

전 행에서  전보석의 무게만큼 뒤로가서 들어있던 보석의 가치에 새로운 보석 가치를 더한다 라는 생각을 다른 문제에서도 똑같이 떠올릴수 있을지 참.. 

문제를 많이 풀어보는 방법밖에 없는건가요.

답변 1

답변을 작성해보세요.

0

안녕하세요 Lilac님.
문제 풀이는 이해가 가지만, 혼자서 점화식을 세우기가 어렵다는 질문을 해주신 것으로 생각이 됩니다.

이 부분은 수많은 분이 공통적으로 고민하는 내용이고, 저 역시도 같은 고민을 했던 때가 있습니다.
특히 이때가 가장 막막하고, 문제를 푼다고 실력이 늘까 회의감도 들었던 것 같습니다.

하지만 확실하게 말씀드릴수 있는 것은, 혼자서 30분 가량을 투자하며 이해한 것이 이후에 혼자 문제를 풀기 위한 기초가 된다는 것입니다.

DP의 대표문제라고 소개를 드렸지만, 사실 대표격인 문제가 훨씬 더 많이 존재합니다. 지금의 Lilac님은 수학책에 있는 수많은 문제 중에 가장 기본이 되는 문제를 굉장히 자세하게 이해한 상태입니다. (물론 난이도는 그리 쉽지는 않지만요.)

따라서, Lilac님께서 30분동안 공부하고 정리한 내용을 무기로 비슷한 난이도의 여러 기초문제를 지금처럼 공부하시면, 점화식을 만드는 실력이 키워질 것이라고 확실하게 말씀드릴 수 있습니다.

 

비슷한 난이도의 문제를 소개드리겠습니다.

https://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=357&sca=99&sfl=wr_subject&stx=%EB%B0%B0%EB%82%AD

위 문제는 영상에서 소개한 문제와 동일한 문제지만 보석이 무제한으로 사용가능합니다.
코드에서 dp[i][j - w[i] ]+ p[i] 으로 점화식을 수정만 해주면 정답으로 처리가 되는데요.
이 점화식이 어떻게 만들어졌는지 한번 생각을 해보시면 좋을 것 같습니다.
(Hint.  i-1행은 보석 i가 전혀 쓰이지 않았지만, i 행의 왼쪽은 보석 i가 이미 여러번 쓰였습니다)

 

https://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=627&sca=99&sfl=wr_subject&stx=%EC%A0%80%EC%9A%B8

위 문제는 저울 문제입니다.
3g, 5g 추가 주어졌을 때 측정할 수 있는 값은 2g, 3g, 5g, 8g인데요.

3 ± (5-3), 5 ± (5-3)의 수식을 통해 2g, 8g을 측정할 수 있음을 알 수 있게 됩니다.
바로 이 부분이 점화식으로 구현이 되는데, 이 부분을 아래 첨부한 소스코드와 설명을 참고하여 이해해보시면 좋겠습니다.
그리고, 이 문제 역시 1)추가 없을 때, 2)3g 추만 있을 때, 3)3g, 5g 추만 있을때.... 아래로 갈수록 보석이 누적되는 형태의 DP배열을 가집니다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kimmy5000&logNo=220795900701 

--------------------------------------------------------------------------------------------------

마지막으로, 문제가 어렵다면 동전문제 수준의 간단한 문제를 주로 풀면서,
예전에 한 번 이해했던 2차원 배열 문제 문제를 반복해서 이해해보는 것도 좋은 방법일 것 같습니다.

Lilac님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.

이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.

감사합니다!

 

 

 

Windfall님의 프로필

Windfall

질문자

2021.12.02

감사합니다! 기초적인 문제부터 천천히 풀어봐야하겠네요