Skip to content

Commit ec12b17

Browse files
committed
product-of-array-except-self sol (py)
1 parent 82cfd90 commit ec12b17

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"""
2+
https://leetcode.com/problems/product-of-array-except-self/description/
3+
4+
๋ฌธ์ œ: ์ •์ˆ˜ ๋ฐฐ์—ด nums๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ์›์†Œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.
5+
๋‹จ, ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•˜์„ธ์š”.
6+
7+
ํ•ต์‹ฌ ์•„์ด๋””์–ด:
8+
๊ฐ ์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ:
9+
- ์™ผ์ชฝ์— ์žˆ๋Š” ์›์†Œ๋“ค์˜ ๊ณฑ
10+
- ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์›์†Œ๋“ค์˜ ๊ณฑ
11+
์„ ๊ฐ๊ฐ ๊ณฑํ•ด์ฃผ๋ฉด, ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ ์ „์ฒด ๊ณฑ์ด ๋œ๋‹ค.
12+
13+
์˜ˆ์‹œ: [1, 2, 3, 4]
14+
- ์ธ๋ฑ์Šค 0: ์™ผ์ชฝ(์—†์Œ) ร— ์˜ค๋ฅธ์ชฝ(2ร—3ร—4) = 24
15+
- ์ธ๋ฑ์Šค 1: ์™ผ์ชฝ(1) ร— ์˜ค๋ฅธ์ชฝ(3ร—4) = 12
16+
- ์ธ๋ฑ์Šค 2: ์™ผ์ชฝ(1ร—2) ร— ์˜ค๋ฅธ์ชฝ(4) = 8
17+
- ์ธ๋ฑ์Šค 3: ์™ผ์ชฝ(1ร—2ร—3) ร— ์˜ค๋ฅธ์ชฝ(์—†์Œ) = 6
18+
19+
TC: O(n) - ๋ฐฐ์—ด์„ ๋‘ ๋ฒˆ ์ˆœํšŒ
20+
SC: O(1) - ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ์ œ์™ธํ•œ ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
21+
"""
22+
23+
from typing import List
24+
25+
class Solution:
26+
def productExceptSelf(self, nums: List[int]) -> List[int]:
27+
n = len(nums)
28+
result = [1] * n # ๊ฒฐ๊ณผ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
29+
30+
# 1๋‹จ๊ณ„: ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ ์™ผ์ชฝ ์›์†Œ๋“ค์˜ ๊ณฑ ๊ณ„์‚ฐ
31+
left_product = 1
32+
for i in range(n):
33+
result[i] = left_product # ํ˜„์žฌ ์œ„์น˜์— ์™ผ์ชฝ ๊ณฑ ์ €์žฅ
34+
left_product *= nums[i] # ๋‹ค์Œ์„ ์œ„ํ•ด ํ˜„์žฌ ์›์†Œ ๊ณฑํ•˜๊ธฐ
35+
36+
# 2๋‹จ๊ณ„: ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ ์˜ค๋ฅธ์ชฝ ์›์†Œ๋“ค์˜ ๊ณฑ ๊ณ„์‚ฐ
37+
right_product = 1
38+
for i in range(n - 1, -1, -1):
39+
result[i] *= right_product # ๊ธฐ์กด ์™ผ์ชฝ ๊ณฑ์— ์˜ค๋ฅธ์ชฝ ๊ณฑ ๊ณฑํ•˜๊ธฐ
40+
right_product *= nums[i] # ๋‹ค์Œ์„ ์œ„ํ•ด ํ˜„์žฌ ์›์†Œ ๊ณฑํ•˜๊ธฐ
41+
42+
return result

0 commit comments

Comments
ย (0)