lh1990   4년 전

하도 풀이를 많이 찾아보다보니 답 코드를 외워버려서;;;

일단 맞추긴했는데 아무리 풀이를 읽어도 몇가지가 이해가 안갑니다..


아래 전체 코드중 핵심 코드인 dp[i]<dp[j]+1 부분이 돌아가는 원리와 이유(풀이를 여기저기서 읽어도 이해가 안되네요..)

그리고 a[i]>a[j]가 조건인건 뒤에수가 커야하니까 라는건 알겠습니다 근데 증가하는 부분수열인데??

10,20,10,30 의경우 10 > 20 > 30 으로 가야하는데  a[i]>a[j] 이면 10  20 10  30 이렇게 경우의수가 다 가능하지 않나요??
 

10 다음 20 다음 10이 아니라 바로 30을 탐색하는 if조건이 없는데 정답이 나오는게 궁금합니다

그리고 전체코드중 result를 1로하면 맞았다고 나오는데 0으로하면 오답이라 나옵니다

요렇게 궁금한데 명확하게 설명해주시면 정말정말 감사드립니다 ㅠㅠ

djm03178   4년 전

30에 대한 dp를 계산할 때 처음에 dp[0]에 저장된 1에 1을 더해서 2로 갱신되고, 그 다음 dp[1]에 저장된 2에 1을 더해서 3으로 갱신되고, 그 다음 dp[2]에 저장된 1에 1을 더해도 갱신이 안 되니까 그대로 3으로 남게 됩니다. dp[1]에는 이미 그 값이 10 -> 20으로 건너온 것이라는 흔적이 남아있는 것이고, dp[2]에는 그 이전에 넘어올 값 없이 자기 혼자뿐이었다는 흔적이 남아있는 것입니다.

그리고 result를 0으로 초기화하면 n=1인 경우 result가 한 번도 갱신되지 않기 때문에 0을 출력해서 틀리게 됩니다.

djm03178   4년 전

그리고 질문은 질문 카테고리에 올려야 하고, 문제 번호를 적는 칸에 문제 번호도 적어야 합니다.

lh1990   4년 전

아.;;; 한참 찾았는데 제가 게시판을 잘못올렸네요;; 지워야 하나요??

result 0으로 초기화면 n이 1인경우 반복문이 돌지않아 result가 0이 출력되어 틀린다는거 맞나요?

djm03178   4년 전

답변이 달린 질문을 지우는 건 더 안 좋습니다. 앞으로만 주의해 주세요.

그리고 맞습니다.

lh1990   4년 전

감사합니다 dp[i] < dp[j]+1 부분은 정말...이글 저글 읽어봐도 왜 저렇게 쓰이고 어떤 원리인지 이해가 안되는데 계속 읽어보고 이해하도록 노력해보겠습니다.

댓글을 작성하려면 로그인해야 합니다.