문제: https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_slice_sum/
문제 요약
- 정수로 구성된 배열 A가 주어졌을 때, 합산 결과가 가장 큰 연속 구간의 합을 구하여라.
풀이
function solution(A) {
let maximum = A[0];
// 누적값을 저장할 변수 accum
let accum = A[0];
for(let i = 1; i < A.length; i++) {
// 누적값과 A[i]의 합이 A[i]보다 작으면 accum을 A[i]로 변경한다
accum = accum + A[i] < A[i] ? A[i] : accum + A[i];
// accum이 maximumq보다 크면 maximum을 accum으로 변경한다
maximum = accum > maximum ? accum : maximum;
};
return maximum;
}

이렇게 연속된 구간의 합산 or 연속된 구간의 양 끝 값 계산과 같은 문제를 풀 때 아래 2개 컨셉을 기억해야겠다.
1) 메모이제이션을 사용하여 중첩 루프문을 피할 것
2) 루프는 끝까지 돌되, 문제가 요구하는 바에 따라 시작점은 변경될 수 있다는 것
'알고리즘, 자료구조 > Codility' 카테고리의 다른 글
| [Javascript] Codility Lesson1 - BinaryGap (0) | 2022.07.19 |
|---|---|
| [Javascript] Codility Lesson9 - MaxDoubleSliceSum (0) | 2022.07.11 |
| [Javascript] Codility Lesson9 - MaxProfit (0) | 2022.06.21 |
| [Javascript] Codility Lesson 8 - Dominator (0) | 2022.06.13 |
| [Javascript] Codility Lesson 7 - Fish (0) | 2022.06.08 |