|
| 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