https://leetcode.com/problems/product-of-array-except-self/
<문제>
Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].
<예시>
Input: [1,2,3,4]
Output: [24,12,8,6]
이것도 아쉬움이 많았던 문제 ...
왜 생각하지 못 했을까 ...
- 각 index 기준 오른쪽에 위치한 값의 누적 곱 - O(n)
- 가장 끝에서부터 누적해서 곱해가면 된다
- 각 index 기준 왼쪽에 위치한 값의 누적 곱 - O(n)
- 가장 앞에서부터 누적해서 곱해가면 된다
- 각 index 기준 오른쪽에 위치한 값의 누적 곱 * 왼쪽에 위치한 값의 누적 곱 구하면 끝 - O(n)
def solution_1(nums: List[int])->List[int]:
# i index의 왼쪽에 위치한 모든 값의 곱
left_product = []
product = 1
for value in nums:
left_product.append(product)
product *= value
# i index의 오른쪽에 위치한 모든 값의 곱
right_product = []
product = 1
for value in nums[::-1]:
right_product.insert(0, product)
product *= value
result = []
for i in range(len(nums)):
# i index의 왼쪽에 위치한 모든 값의 곱 * 오른쪽에 위치한 모든 값의 곱
result.append(left_product[i]*right_product[i])
return result
'다전공_컴퓨터공학 > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬 알고리즘] 8장 - 팰린드롬 연결 리스트 (leetcode 234) (0) | 2020.11.18 |
---|---|
[파이썬 알고리즘] 7장 - 주식을 사고팔기 가장 좋은 시점 (0) | 2020.11.13 |
[파이썬 알고리즘] 7장 배열 - 배열 파티션 (array partition) (0) | 2020.11.13 |
[파이썬 알고리즘] 7장 배열 - 세 수의 합 (3 sum) (0) | 2020.11.13 |
[파이썬 알고리즘] 7장 배열 - 빗물 트래핑 (trapping rain water) (0) | 2020.11.13 |