CodingTest/LeetCode

[LeetCode] 238. Product of Array Except Self, Medium

뜸부깅 2025. 4. 15. 15:12
반응형

1. 문제

  • 정수 배열 nums가 주어질 때, answer[i]에 자기 자신을 제외한 요소의 곱을 저장한 배열을 반환하라.

2. 해결

function productExceptSelf(nums: number[]): number[] {
    const n = nums.length;

    const ans = new Array(n).fill(1);

    let left = 1;

    for(let i =0; i< n; i++) {
        ans[i] = left;
        left *= nums[i];
    }


    let right = 1;
    for(let i = n -1; i>=0; i--) {
        ans[i] *= right;
        right *= nums[i];
    }
        
    return ans
}
  • 못풀었다.
  • prefix Sum이라는 기법을 사용하는 거 같은데, ans를 배열로 선언하고, 왼쪽 -> 오른쪽으로 향하면서 i번 째 정답 배열에 i-1까지의 곱을 누적해두고, 오른쪽 -> 왼쪽으로 향하면서 i 번 째 정답 배열에 i+1까지의 곱을 누적해둔다.
  • i 번 째 정답 배열에는 i-1 까지의 곱  * i+1까지의 곱을 담으면 자기 자신을 제외한 요소의 곱이 담긴다.