034. sumArray

BenKim·2020년 9월 13일
0

sumArray
숫자들의 배열이 주어졌을 때, 배열 안의 "연속되는" 원소들을 더해서 얻을 수 있는 최대 값을 계산하십시오.
단일 배열 원소도 "연속되는" 원소로 간주합니다.

참고로, 구현한 함수의 시간 복잡도는 O(n)이며 공간(메모리) 복잡도는 O(1)입니다.
예시 1:
sumArray([1, 2, 3]); // => 6
예시 2:
sumArray([1, 2, 3, -4]); // [1, 2, 3]의 합 === 6
예시 3:
sumArray([1, 2, 3, -4, 5]); // [1, 2, 3, -4, 5]의 합 === 7
예시 4:
sumArray([4, -1, 5]); // => [4, -1, 5]의 합 === 8
예시 5:
sumArray([10, -11, 11]); // => 11 (단일 배열 원소)

내가 작성한 코드

const sumArray = function(array) {
  //TODO: 코드를 여기에 작성합니다.
  //예시
  [-1, 1, 2, -3 ,5, -3]
  // 현재값과 다음값을 더했을때 값이 다음값보다 작아진다면 현재값은 최개값을 낮추는 값이다.
  // 그런경우에는 다음값부터 다시 시작하도록 한다.
  [-5, 6, -3, 2, 1]
  let curr =array[0];
  let max  =array[0];
  for(let i=1; i<array.length; i++){
    curr = Math.max(array[i], curr+array[i]); 
    max = Math.max(curr, max) // 연속하는 최대값들이 갱신되면 변경되는부분

  }
  return max;
};
profile
연습과 자신감

0개의 댓글