📄 문제
- 정수 배열 nums가 주어지면 배열 내에서 붙어있는 요소들끼리 곱을 해서 값을 저장하고, 가장 큰 수를 return
- 주의점 : 바로 옆에 있는 요소만 계산한 값을 취급한다.

📝 나의 풀이
let maxProduct = function(nums) {
let maxNum = nums[0];
let minNum = nums[0];
let result = nums[0];
for (let i = 1; i < nums.length; i++) {
maxNum *= nums[i];
minNum *= nums[i];
if (nums[i] < 0) {
let currentNum = maxNum;
maxNum = minNum;
minNum = currentNum;
}
maxNum = Math.max(maxNum, nums[i]);
minNum = Math.min(minNum, nums[i]);
result = Math.max(result, maxNum);
}
return result;
};

⌨ 접근법
1. 양 옆의 요소들끼리 곱셈을 할 수 있도록 업데이트 시킬 변수 3개를 미리 선언해둔다.
2. 왜? => 바로 for문을 쓰려니까 i + 1등 하고 마지막은 예외를 준다던가, 반복 변수를 두개 선언해야 해서 보기 싫다.
3. 반복문을 돌려 처음의 값과 하나씩 곱해가면서 max, min 을 업데이트 해주고 마지막에 result 와 비교해서 또 업데이트 한다. (이래서 처음에 result도 변수로 잡아놔야 한다. 반복문의 끝에서 현재 차례의 요소와 비교를 위함!)
😂 아쉬운 점
- 풀고 나서 보니 코드를 더 줄일 수 있을 것 같았는데 쉽지가 않았다. 구현을 한 정도로만 만족해야겠다.
- 내 방법보다 효율적인 방법이 분명 있을 것 같은데 오늘도 공부 해야겠다고 다짐하고 잔다.
📚 문제 링크
https://leetcode.com/problems/maximum-product-subarray/
Maximum Product Subarray - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
'TEAM 알고싶다 > 성공 문제' 카테고리의 다른 글
[Baekjoon (Node.js)] 2164번 카드2 (0) | 2022.06.22 |
---|---|
[프로그래머스] JavaScript - 캐시 (0) | 2022.06.17 |
[LeetCode] 41. First Missing Positive (처음 누락된 양수?) (0) | 2022.06.13 |
[프로그래머스] JavaScript - 오픈채팅방 (0) | 2022.06.09 |
[프로그래머스] JavaScript - 구명보트 (0) | 2022.06.06 |