- LSCS: 주어진 배열의 연속된 부분 배열의 합을 구한다고 할 때, 이 중 가장 큰 값(Largest Sum of Contiguous Subarray)
- 연속된 부분 배열들: 배열 [1,2,3]의 연속 부분 배열은 [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] 입니다.
- arr[i]는 -100,000 이상 100,000 이하의 정수
const LSCS = function (arr) {
// 내 접근법은 연속된 부분배열들을 다 구하고 그걸 합하는 거였는데 접근법 자체가 잘못된거같다.
// 그냥 sum을 구해서 -100,000 이랑 비교해서 리턴한다.
let sum = 0;
let max = Number.MIN_SAFE_INTEGER;
for(let i=0; i<arr.length; i++) {
// 이런식으로 sum을 하면 연속된 부분 배열의 합이 된다.
sum += arr[i];
if(sum > max) {
max = sum;
}
// 음수의 경우
if(sum < 0) {
sum = 0;
}
}
return max;
};
참고자료
- Number.MIN_SAFE_INTEGER 상수는 JavaScript에서 안전한 최소 정수값을 나타냅니다.
Number.MIN_SAFE_INTEGER | MDN