본문 바로가기

프로그래머/Python

[Python] Leet Code 238. Product of Array Except Self

본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.

왼쪽 곱셈 결과에 오른쪽 값을 차례대로 곱셈

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:

        out = []
        prod = 1
        for idx in range(0, len(nums)):
            out.append(prod)
            prod *= nums[idx]

        prod = 1
        for idx in range(len(nums)-1, -1, -1):
            out[idx] = out[idx]*prod
            prod = prod*nums[idx]

        return out

이 문제에서 배워야할 포인트

  • 나눗셈을 하지 않고 O(n)에 풀이해야 한다
  • 풀이 방법은 한 가지 뿐이다. 자기 자신을 제외하고 왼쪽의 곱셈 결과와 오른쪽의 곱셈 결과를 곱해야 한다
  • range()의 역순 계산