[LeetCode] 238. Product of Array Except Self

Chobby·2025년 2월 24일
1

LeetCode

목록 보기
254/427

😎풀이

  1. 핵심은 O(2n)의 반복으로 모든 요소의 본인을 제외한 요소의 곱을 알아내는 것
    1-2. 해당 방법은 나를 제외한 왼쪽 요소의 곱의 합계 * 나를 제외한 오른쪽 요소의 곱의 합계
  2. 왼쪽부터 값을 누적하며 본인 요소를 포함하기 이전까지의 합계를 할당
  3. 오른쪽부터 값을 누적하며 본인 요소를 포함하기 이전까지의 합계를 곱함
  4. 배열 반환
function productExceptSelf(nums: number[]): number[] {
    const n = nums.length
    const result = Array(n).fill(1)
    // 자신을 제외한 왼쪽 요소의 곱 계산
    let leftAcc = 1
    for(let i = 0; i < n; i++) {
        result[i] = leftAcc
        leftAcc *= nums[i]
    }
    // 자신을 제외한 오른쪽 요소의 곱 계산
    let rightAcc = 1
    for(let i = n - 1; i >= 0; i--) {
        result[i] *= rightAcc
        rightAcc *= nums[i]
    }

    // 자신을 제외한 요소의 곱(자신의 왼쪽 요소의 곱의 합계 * 자신의 오른쪽 요소의 곱의 합계)
    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글