inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

5. 최대 매출(Sliding Window)

슬라이딩 윈도우 관련 문의드립니다.

227

MostOneBrush

작성한 질문수 3

0

            function solution1(karr){
                let answersum = 0max = Number.MIN_SAFE_INTEGER
                for (let i = 0i <= arr.length - ki++) {
                    answer = [...arr].slice(ii+k)
                    sum = answer.reduce((ab=> a + b)
                    if (max < summax = sum
                }                   
                return max;
           }

섹션 4에서 투포인터 알고리즘 관련해서는 시간복잡도에서 얼마나 단축되는지 이해가 됬는데 이번 슬라이딩 윈도우에서 설명하신 방식에서는 어느 정도로 차이가 나는지 궁금해서 문의글 올립니다.

겉보기엔 for문이 하나인데 reduce에서 배열 합산을 하면서 이중 for문이 들어간 것과 동일하다고 생각하고 드리는 문의사항인데요.

이중 for문을 돌릴 경우의 시간복잡도에 대해 강의 앞부분에서 설명주시긴 했는데, 투포인터 알고리즘 때와 다르게 눈에 띄게 큰 차이를 느끼기가 어려워서 배열을 한 칸씩 이동하면서 잘라서 합산하는 방식이랑 기존의 합산된 것을 새로 더하고 빼는 것이 어느정도로 차이나는지가 궁금합니다.

javascript 코테 준비 같이 해요!

답변 1

1

김태원

안녕하세요^^

위에 코드는 reduec가 answer 길이 만큼 반복하면서 콜백함수를 반복호출하는 구조이기 때문에 2중 for문을 쓰는 시간복잡도 O(n^2)입니다. 

영상에서는 for i 가 arr의 길이만큼 반복하면 끝나기 때문에 시간복잡도 O(n) 입니다.

continue를 사용하는 이유

0

101

2

정렬 가능 여부 판단하기

0

80

2

알고리즘 학습법 관련해서 질문드립니다.

0

96

1

코드 리뷰 부탁드립니다!

0

107

1

indexOf를 사용해서 풀어보았습니다 !!

0

75

1

저는 이런식으로 구현 해보았습니다 !!

0

69

1

12,13,14 강의 소리만 나오고 검은 화면입니다

0

110

3

반복문 최소화하고 indexOf 사용해서 풀어봤습니다

0

74

1

영상 보기 전에 직접 풀어봤습니다.

0

79

1

섹션1의 17번문제 이 풀이로 풀어도 될까요?

0

141

2

정규표현식으로 처리해도 상관없나요 ?

0

127

2

3칸씩 건너뛸 수 있을 경우

0

132

2

강의에 대해 질문있습니다.

0

144

2

Object와 Set을 이용해 풀어봤습니다.

0

128

2

이렇게 해도 되나요?

0

107

2

선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.

0

149

2

이렇게 풀어도 괜찮을까요?

0

145

1

이렇게 풀어도 괜찮을까요?

0

124

1

모든 아나그램 찾기에서 시간복잡도

0

106

1

코드리뷰 부탁드립니다.

0

138

1

for loop 탈출은 return 문으로 해도 되지 않나요?

0

134

1

투포인트알고리즘으로 풀어봤습니다.

0

147

0

코드 리뷰 부탁드립니다.

0

121

1

코드 맞게 작성한 거 아닌가여??

0

149

1