숫자로만 이루어진 배열에서, 연속적인 요소를 더했을 때 가장 큰 값이 나오는 경우, 그 값을 return 해주는 문제이다. 2중 반복문을 통해 배열의 갯수만큼의 배열을 만들고, 그 안에서 가장 큰 값들을 배열로 이뤄준 후, 그 중 최댓값을
Math.max()
메소드로 구할 수 있었다.
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 value
가NaN
으로 나와서, 확인해보니Deep copy
가 적용되지 않은 것이어서 메소드를 활용할 때 배열에Math.max(...returnMaxArr)
와 같이 ...을 덧붙혀줘서 최종 값을 반환할 수 있었다. 더 좋은 풀이방법을 많이 탐색해서 시간복잡도를 줄이는 방법을 찾아봐야겠다.