해결된 질문
작성
·
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) 입니다. 영상의 방법을 추천합니다.
안녕하세요 ~ 감사합니다 선생님!