• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

강의 코드에 반례가 있습니다.

22.02.22 14:31 작성 조회수 277

-1

입력이 [5, 2, 4, 6, 7]로 주게되면 5, 6, 7 를 뽑아내어 길이가 3인 최대 부분 증가수열을 만들 수 있습니다.

하지만 강의코드에서 위와 같이 입력을 주게되면 출력이 4가 나옵니다.

 

반례의 경우에도 올바른 출력이 나오도록 수정해보았습니다.

확인부탁드립니다.

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){  
               let answer = 0;
               let n = arr.length;
               let dy = Array.from({length:n}, ()=>0);
               dy[0] = 1;
               let max = 0;

               for(let i=1; i<n; i++){
                   if(arr[i] > arr[max]){
                       dy[i] = dy[i-1]+1;
                       max = i;
                   }
                   else dy[i] = dy[i-1];
                   answer = Math.max(answer, dy[i]);
               }
               
               return answer;
            }

            let arr=[5,2,4,6,7];
            console.log(solution(arr));
        </script>
    </body>
</html>

답변 2

·

답변을 작성해보세요.

2

log님의 프로필

log

2022.03.02

말씀하신 경우는 반례가 아닌거 같습니다. 

5, 2, 4, 6, 7 에서 LIS 는 5, 8, 7 이 아닌 2, 4, 6, 7 입니다.

0

wjdgksak님의 프로필

wjdgksak

2023.02.25

반례 또있습니다.

입력
1
1
출력
0

정답출력
1

검토 부탁드립니다.
감사합니다.