본문 바로가기

리트코드/midium

[리트코드] 238. Product of Array Except Self - js

반응형

1. 문제

https://leetcode.com/problems/product-of-array-except-self/description/

 

Product of Array Except Self - LeetCode

Can you solve this real interview question? Product of Array Except Self - Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nu

leetcode.com

2. 코드

처음엔 for 문 안에 reduce를 넣는 방식으로 풀었는데 예상한 결과지만 타임아웃이 떴다. 

모든 값의 곱에서 나의 값을 나누면 그것이 정답인 것을 모른채...

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var productExceptSelf = function (nums) {
    let product = 1;
    let zero = 0;

    for (let num of nums) {
        num === 0 ? zero++ : product *= num;
        // 0이 한 개 이상이면 모든 값 0
        if (zero > 1) {
            return new Array(nums.length).fill(0)
        }
    }

    for (let i in nums) {
    	// 요소 중 0이 한 개라도 없을 경우
        if (!zero) {
            nums[i] = product / nums[i]
        }else if (nums[i] !== 0 && zero) { // 0이 있지만 현재 요소가 0이 아닌 경우
            nums[i] = 0
        }else if(nums[i] === 0 && zero){ // 0이 있고, 현재 요소가 그 0인 경우
            nums[i] = product
        }
    }
    
    return nums
};
반응형