Skip to content

Commit b47d55b

Browse files
committed
solve: product of array except self
1 parent d21692f commit b47d55b

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// ์ขŒ->์šฐ ๋ฐฉํ–ฅ์˜ ๋ˆ„์ ๊ณฑ๊ณผ ์šฐ->์ขŒ ๋ฐฉํ–ฅ์˜ ๋ˆ„์ ๊ณฑ ํ™œ์šฉ
2+
// TC: O(N)
3+
// SC: O(N) (๋‹ต์•ˆ์„ ์ œ์™ธํ•˜๋ฉด O(1))
4+
5+
/**
6+
* @param {number[]} nums
7+
* @return {number[]}
8+
*/
9+
var productExceptSelf = function (nums) {
10+
const result = new Array(nums.length).fill(1);
11+
12+
let leftToRight = 1;
13+
for (let index = 1; index < nums.length; index++) {
14+
leftToRight *= nums[index - 1];
15+
result[index] *= leftToRight;
16+
}
17+
18+
let rightToLeft = 1;
19+
for (let index = nums.length - 2; index >= 0; index--) {
20+
rightToLeft *= nums[index + 1];
21+
result[index] *= rightToLeft;
22+
}
23+
24+
return result;
25+
};
26+
27+
// 1์ฐจ ํ’€์ด
28+
// 0์˜ ๊ฐฏ์ˆ˜๊ฐ€ 0๊ฐœ, 1๊ฐœ, 2๊ฐœ์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์„œ ํ’€์ด
29+
// 0๊ฐœ์ธ ๊ฒฝ์šฐ, ๋‹ต์•ˆ ๋ฐฐ์—ด์˜ ์›์†Œ๋Š” '๋ชจ๋“  ์›์†Œ ๊ณฑ / ํ˜„์žฌ ์›์†Œ'
30+
// 1๊ฐœ์ธ ๊ฒฝ์šฐ, 0์˜ ์œ„์น˜ํ•œ ์›์†Œ๋งŒ '0์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์›์†Œ ๊ณฑ' ์ด๊ณ  ๊ทธ ์™ธ '0'
31+
// 2๊ฐœ์ธ ๊ฒฝ์šฐ, ๋‹ต์•ˆ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๊ฐ€ '0'
32+
33+
// TC: O(N)
34+
// SC: O(N)
35+
36+
/**
37+
* @param {number[]} nums
38+
* @return {number[]}
39+
*/
40+
var productExceptSelf = function (nums) {
41+
const zeroCount = nums.filter((num) => num === 0).length;
42+
if (zeroCount > 1) {
43+
return new Array(nums.length).fill(0);
44+
}
45+
46+
const multipled = nums.reduce(
47+
(total, current) => (current === 0 ? total : total * current),
48+
1
49+
);
50+
51+
if (zeroCount === 1) {
52+
const zeroIndex = nums.findIndex((num) => num === 0);
53+
const result = new Array(nums.length).fill(0);
54+
result[zeroIndex] = multipled;
55+
return result;
56+
}
57+
58+
return nums.map((num) => multipled / num);
59+
};

0 commit comments

Comments
ย (0)