본문 바로가기
일반 학습/코딩 테스트

TOY26: LSCS 연속된 부분 배열

by StelthPark 2021. 11. 15.

더보기
const LSCS = function (arr) {

 

  let subpresent =0
  let max = Number.MIN_SAFE_INTEGER;

 

  for(let i=0; i<arr.length; i++){
    subpresent= subpresent+arr[i]
 
    if(subpresent>max)
     max = subpresent
 
    if(subpresent<0){
      subpresent=0;
    }
  }
return max
};

 

현재 더하고 있는중인 subpresent와 max로 Number.MIN_SAFE_INTEGER 를 사용해 안전한 최소값을 할당한다.

arr의 길이만큼 for문을 돌려 계속해서 subpresent에 쌓게 되고 max보다만 크면 최종적인 리턴할 값인 max에 현재까지 계산한 값들을 계속해서 쌓는다.

만약, 음수가 연속되기 시작해서 현재 값에서 계속해서 마이너스가 되어 현재 계산중인 값이 0보다 작은 음수가 되버린다면 현재 계산중인 값을 0으로 초기화하고 다시 계산하게 만든다.

최종적으로 max를 리턴시킨다.

댓글