• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

섹션 5. 연속 부분수열 2

23.05.28 23:45 작성 조회수 172

1

선생님 안녕하세요 ~

알고리즘 관련 문제 질문 드립니다.

정답은 이렇게 구현해도 맞을거 같은데, 알고리즘 적으로 이렇게 구현하면 안될까요??

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr, m){ 
                 let answer = 0;
                 let lt=rt=0;
                 let sum = 0;
                 while(lt < arr.length){
                     sum += arr[rt]
                     if(sum <= m){
                         answer += 1;
                         rt += 1;
                     } else{
                         lt += 1;
                         rt = lt;
                         sum = 0; 
                     }
                     console.log(sum)
                 }
                 return answer;
            }

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

답변 1

답변을 작성해보세요.

1

안녕하세요^^

else 쪽에서 rt = lt로 rt가 매번 lt로 초기화 되는 것 때문에 위에 코드는 2중 반복문과 같아 시간복잡도가 O(n^2)로 볼 수 있습니다.

영상의 방법은 for문 안에 while문이 있어도 결국에 총 반복횟수는 단일반복문 횟수만큼만 반복하는 시간복잡도가 O(n) 입니다. 영상의 방법을 추천합니다.

ReKoding님의 프로필

ReKoding

질문자

2023.05.31

안녕하세요 ~ 감사합니다 선생님!