배열을 입력받아 output[i]가 자신을 제외한 모든 요소의 곱셉 결과가 되도록 출력하라.
단, 복잡도는 O(n)이고 나눗셈은 사용하면 안된다.
나눗셈을 하지 말라고 한 이유는 미리 주어진 값들을 모두 곱하고 각각 자신을 나눠서 풀이하면 바로 답이 나오기 때문에 그런 것이다, 그렇다면 자기 자신을 제외하고 왼쪽의 곱셈 결과와 오른쪽의 곱셈 결과를 곱해야한다.
from typing import List
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
out = []
p = 1
# 왼쪽 곱셈
for i in range(0, len(nums)):
out.append(p)
p = p * nums[i]
p = 1
# 왼쪽 곱셈 결과에 오른쪽 값을 차례대로 곱셈
for i in range(len(nums) - 1, 0 - 1, -1):
out[i] = out[i] * p
p = p * nums[i]
return out