Skip to content

Commit 1655639

Browse files
committed
[7th batch] week 2 - product of array except self
1 parent f8b31b0 commit 1655639

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

โ€Žproduct-of-array-except-self/liza0525.pyโ€Ž

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,32 @@ def productExceptSelf(self, nums: List[int]) -> List[int]:
2020
answers[i] *= after_total_prod
2121

2222
return answers
23+
24+
25+
# 7๊ธฐ ํ’€์ด
26+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
27+
# - nums์˜ ๊ธธ์ด๋งŒํผ์ด ์ตœ๋Œ€ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋œ๋‹ค. for๋ฌธ ๋‘ ๋ฒˆ ๋Œ๋ฆฐ ๊ฒƒ์€ O(2n) -> O(n)์œผ๋กœ ํ‘œ๊ธฐ ๊ฐ€๋Šฅ
28+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
29+
# - nums์˜ ๊ธธ์ด๋งŒํผ res๋ฅผ ๋งŒ๋“ ๋‹ค.
30+
# - ๋‹จ ์ด๋Š” return variable์ด๋ผ์„œ ๋ฆฌํŠธ์ฝ”๋“œ์—์„œ๋Š” ๊ณต๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์—์„œ ์ œ์™ธ, ์กฐ๊ฑด์˜ O(1)์™€ ๋™์ผํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
31+
class Solution:
32+
def productExceptSelf(self, nums: List[int]) -> List[int]:
33+
# ์ •๋‹ต์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€
34+
res = [1 for _ in range(len(nums))]
35+
36+
previous_res = 1
37+
for i in range(len(nums)):
38+
# i๋ฒˆ์งธ ์ธ๋ฑ์‹€ ์ด์ „๊นŒ์ง€์˜ ๊ฐ’๋“ค์„ res[i]์— ๋จผ์ € ๊ณฑํ•ด์ค€ ํ›„,
39+
# ์ž๊ธฐ ์ž์‹ ์„ previous_res์— ๊ณ„์‚ฐํ•œ๋‹ค. ์ด๋Š” ๋‹ค์Œ loop, ์ฆ‰ i+1๋ฒˆ์งธ์ผ ๋•Œ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ณฑํ•˜๊ฒŒ ๋œ๋‹ค.
40+
res[i] *= previous_res
41+
previous_res *= nums[i]
42+
43+
next_res = 1
44+
for i in range(len(nums) -1, -1, -1):
45+
# ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ท์ชฝ index๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด i๋ฒˆ์งธ ์ธ๋ฑ์Šค ์ดํ›„์˜ ๊ฐ’๋“ค์˜ ๊ณฑ๋“ค์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
46+
# i๋ฒˆ์งธ ์ธ๋ฑ์‹€ ์ดํ›„๊นŒ์ง€์˜ ๊ฐ’๋“ค์„ res[i]์— ๋จผ์ € ๊ณฑํ•ด์ค€ ํ›„,
47+
# ์ž๊ธฐ ์ž์‹ ์„ next_res ๊ณ„์‚ฐํ•œ๋‹ค. ์ด๋Š” ๋‹ค์Œ loop, ์ฆ‰ i-1๋ฒˆ์งธ์ผ ๋•Œ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ณฑํ•˜๊ฒŒ ๋œ๋‹ค.
48+
res[i] *= next_res
49+
next_res *= nums[i]
50+
51+
return res

0 commit comments

Comments
ย (0)