인프런 커뮤니티 질문&답변

ReKoding님의 프로필 이미지
ReKoding

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

섹션 5. 연속 부분수열 2

해결된 질문

작성

·

209

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
질문자

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

ReKoding님의 프로필 이미지
ReKoding

작성한 질문수

질문하기