File tree Expand file tree Collapse file tree
product-of-array-except-self Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You canโt perform that action at this time.
0 commit comments