강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của wlswl24352605
wlswl24352605

câu hỏi đã được viết

Giới thiệu về giải quyết vấn đề thuật toán JavaScript (chuẩn bị cho bài kiểm tra mã hóa)

3. Trình tự tăng từng phần tối đa (LIS)

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

Viết

·

458

-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>
javascript코테 준비 같이 해요!

Câu trả lời 2

2

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

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

0

반례 또있습니다.

입력
1
1
출력
0

정답출력
1

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

Hình ảnh hồ sơ của wlswl24352605
wlswl24352605

câu hỏi đã được viết

Đặt câu hỏi