코드 리뷰 부탁드립니다!!
335
작성한 질문수 4
안녕하세요 선생님!
강의를 듣기 전에 혼자 풀어보았습니다.
이중 for문으로 풀어서 시간복잡도 상으로는 좋지 않을 것 같은데 이것도 괜찮은 코드일까요?
function solution(k, arr) {
let answer = 0;
let sum = 0;
let check = 0;
for (let i = 0; i < arr.length - 2; i++) {
for (let j = 0; j < k; j++) {
sum += arr[i + j];
check += 1;
}
answer = Math.max(answer, sum);
sum = 0;
check = 0;
}
return answer;
}
let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));
답변 2
0
안녕하세요^^
강의 듣기 전에 2중 for문으로 해결한 것 만으로도 잘 하신겁니다. 그래도 영상의 슬라이딩 윈도우를 통한 단일 for문으로 해결하는 방법을 잘 익혀두세요. 실제 코테에서 이 문제를 2중 for문으로 짜면 시간초과가 날 가능성이 높습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
코드를 살펴보니 투 포인터(Two Pointer) 알고리즘을 이용한 코드 같습니다. 시간복잡도는 O(N*K)로 나쁘지 않지만, N과 K의 입력 범위에 따라서는 시간 초과가 발생할 수도 있습니다.
만약에 입력값이 큰 경우 시간 복잡도를 좀 더 줄이기 위해 다른 알고리즘을 사용할 필요가 있습니다. 한 가지 예로는 최대 부분합 알고리즘이 있습니다. 이 알고리즘을 사용하면 시간복잡도 O(N)으로 풀이가 가능합니다.
참고로, 이 문제는 백준 알고리즘(https://www.acmicpc.net/problem/2559)에서 문제로 출제되었습니다. 백준에서는 시간복잡도를 줄이기 위해서 위와 같이 최대 부분합을 이용한 풀이가 일반적입니다.
최대 부분합 알고리즘에 대해서는 구글링을 통해 자세히 공부해보시기 바랍니다.
코드 리뷰 요청해주셔서 감사합니다. 좋은 하루 되세요!
continue를 사용하는 이유
0
80
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
69
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
101
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
136
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
126
2
강의에 대해 질문있습니다.
0
135
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





