서크호
서크호 - 개발 스토리
서크호
전체 방문자
오늘
어제
  • 분류 전체보기 (22)
    • TEAM 알고싶다 (17)
      • 성공 문제 (16)
      • 실패 문제 (1)
    • JavaScript (0)
    • TypeScript (0)
    • Node.js (2)
      • React.js (0)
      • Next.js (0)
      • NestJS (2)
    • Baekjoon (Node.Js) (1)
    • Error Box (1)
    • MySQL (1)
    • JAVA (0)
    • Andriod (0)
    • Spring Boot (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 적록색약 nodejs
  • NestJs Strategy
  • Nest mysql
  • NestJs session
  • 백준
  • 적록색약 javascript
  • Nest DB
  • NestJS ValidationPipe
  • NestJs login
  • nodejs
  • 10026
  • 10026 node
  • NestJs PassPort
  • 백준 적록색약
  • javascript
  • Nest Typeormm
  • Nestjs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
서크호
TEAM 알고싶다/성공 문제

[LeetCode] 152. Maximum Product Subarray(최대로 생성된 부분 배열?)

TEAM 알고싶다/성공 문제

[LeetCode] 152. Maximum Product Subarray(최대로 생성된 부분 배열?)

2022. 6. 14. 23:38

📄 문제

- 정수 배열 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
    'TEAM 알고싶다/성공 문제' 카테고리의 다른 글
    • [Baekjoon (Node.js)] 2164번 카드2
    • [프로그래머스] JavaScript - 캐시
    • [LeetCode] 41. First Missing Positive (처음 누락된 양수?)
    • [프로그래머스] JavaScript - 오픈채팅방
    서크호
    서크호
    팀 스터디 및 개인 개발 관련 블로그 입니다!

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.