Skip to content

Commit 155df4b

Browse files
committed
풀이3: Climbing Stairs #230
1 parent 5609517 commit 155df4b

File tree

1 file changed

+47
-26
lines changed

1 file changed

+47
-26
lines changed

product-of-array-except-self/seungseung88.js

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,58 @@
66
* 공간 복잡도: O(1)
77
* - 추가 배열 생성 X
88
*/
9-
const productExceptSelf = (nums) => {
10-
let multiplyResult = 1;
11-
let countZero = 0;
9+
// const productExceptSelf = (nums) => {
10+
// let multiplyResult = 1;
11+
// let countZero = 0;
1212

13-
for (let i = 0; i < nums.length; i += 1) {
14-
if (nums[i] === 0) {
15-
countZero += 1;
13+
// for (let i = 0; i < nums.length; i += 1) {
14+
// if (nums[i] === 0) {
15+
// countZero += 1;
1616

17-
if (countZero >= 2) {
18-
multiplyResult = 0;
19-
break;
20-
}
17+
// if (countZero >= 2) {
18+
// multiplyResult = 0;
19+
// break;
20+
// }
2121

22-
continue;
23-
}
24-
multiplyResult *= nums[i];
25-
}
22+
// continue;
23+
// }
24+
// multiplyResult *= nums[i];
25+
// }
26+
27+
// for (let i = 0; i < nums.length; i += 1) {
28+
// if (countZero === 1) {
29+
// if (nums[i] === 0) {
30+
// nums[i] = multiplyResult;
31+
// } else {
32+
// nums[i] = 0;
33+
// }
34+
// } else if (countZero >= 2) {
35+
// nums[i] = 0;
36+
// } else {
37+
// nums[i] = multiplyResult / nums[i];
38+
// }
39+
// }
40+
41+
// return nums;
42+
// };
43+
44+
// 누적 합 이용
45+
const productExceptSelf = (nums) => {
46+
const result = Array(nums.length).fill(1);
47+
48+
let prefix = 1;
2649

2750
for (let i = 0; i < nums.length; i += 1) {
28-
if (countZero === 1) {
29-
if (nums[i] === 0) {
30-
nums[i] = multiplyResult;
31-
} else {
32-
nums[i] = 0;
33-
}
34-
} else if (countZero >= 2) {
35-
nums[i] = 0;
36-
} else {
37-
nums[i] = multiplyResult / nums[i];
38-
}
51+
result[i] = prefix;
52+
prefix *= nums[i];
53+
}
54+
55+
let postfix = 1;
56+
57+
for (let i = nums.length - 1; i >= 0; i -= 1) {
58+
result[i] *= postfix;
59+
postfix *= nums[i];
3960
}
4061

41-
return nums;
62+
return result;
4263
};

0 commit comments

Comments
 (0)