반응형
* leetcode 238. Product of Array Except Self
Q. 배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력하라.
# 입력
[1, 2, 3, 4]
# 출력
[24, 12, 8, 6]
# 나눗셈을 하지 않고 O(n)으로 풀이하라.
풀이 1. 왼쪽 곱셈 결과에 오른쪽 값을 차례대로 곱셈
# 자신을 제외한 왼쪽 곱셈 결과
# [1, 1, 2, 6]
# 자신을 제외한 오른쪽 곱셈 결과
# [24, 12, 4, 1]
# 이 둘을 곱하면
# [ 1, 1, 2, 6]
# [24, 12, 4, 1]
# [24, 12, 8, 6] -> 답
def productExceptSelf(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
반응형
'프로그래밍 > [ Python ]' 카테고리의 다른 글
[연결 리스트] 팰린드롬 연결 리스트 (1) | 2021.01.18 |
---|---|
[배열] 주식을 사고팔기 가장 좋은 시점 (0) | 2021.01.17 |
[배열] 배열 파티션 1 (0) | 2021.01.17 |
[배열] 새 수의 합 (0) | 2021.01.17 |
[배열] 빗물 트래핑 (0) | 2021.01.13 |