Algorithm | Code Kata #19

Wook·2021년 12월 26일
0

Algorithm | Code Kata

목록 보기
19/21

숫자로만 이루어진 배열에서, 연속적인 요소를 더했을 때 가장 큰 값이 나오는 경우, 그 값을 return 해주는 문제이다. 2중 반복문을 통해 배열의 갯수만큼의 배열을 만들고, 그 안에서 가장 큰 값들을 배열로 이뤄준 후, 그 중 최댓값을 Math.max() 메소드로 구할 수 있었다.


📲 My Code

const maxSubArray = nums => {
  let returnMaxArr=[]; //

  for (let i=0; i<nums.length; i++)
  { 
    let eachMaxArr=[] 
    let eachMax=nums[i]
    eachMaxArr.push(eachMax);

    for (let j=i+1; j<nums.length; j++)
    { 
      eachMax+=nums[j]
      eachMaxArr.push(eachMax)
    }

    returnMaxArr.push(Math.max(...eachMaxArr)) // 깊은 복사를 통해 메소드를 활용할 수 있었다.
  }
  return Math.max(...returnMaxArr)
};


느낀 점

접근은 간단히 모든 경우의 수를 구해서 그 중 최종값을 찾는 것이었다. 처음에 return valueNaN으로 나와서, 확인해보니 Deep copy가 적용되지 않은 것이어서 메소드를 활용할 때 배열에 Math.max(...returnMaxArr)와 같이 ...을 덧붙혀줘서 최종 값을 반환할 수 있었다. 더 좋은 풀이방법을 많이 탐색해서 시간복잡도를 줄이는 방법을 찾아봐야겠다.

profile
지속적으로 성장하고 발전하는 진취적인 태도를 가진 개발자의 삶을 추구합니다.

0개의 댓글