티스토리 뷰
제약 조건이 없다면 미리 값들을 모두 곱한 다음에 이터레이터가 되는 값을 나눠서 간단하게 구할 수 있지만... 제약조건이 있기 때문에 시간 복잡도를 맞추기 위해서는 이터레이터가 되는 값의 왼쪽을 모두 곱한 결과에 오른쪽 값을 모두 곱한 값을 곱해줘서 구해볼 수 있다. (이것도 한참 고민하다가 모범 답안을 본 건데, 진짜 미친 풀이인 거 같다...)
from typing import List
def multiply(nums_list: List[int]) -> List[int]:
result = []
left_p = 1
right_p = 1
# 이터레이터 기준 왼쪽 값들의 곱을 저장
for i in range(0, len(nums_list)):
result.append(left_p)
left_p *= nums_list[i]
# 이터레이터 기준 오른쪽 값들의 곱을 저장
for i in range(len(nums_list) - 1, 0 - 1, -1):
result[i] *= right_p
right_p *= nums_list[i]
return result
if __name__ == '__main__':
nums = [1, 2, 3, 4]
print(multiply(nums))
이러면 간단하게 결과를 구할 수 있다. 위 풀이 방법은 배열의 곱이나 합을 구할 때 유용하게 쓰일 거 같으니, 반드시 기억해두자
반응형
'[Python] > 선형 자료구조' 카테고리의 다른 글
[Python] 단방향 연결리스트 구현 (0) | 2021.05.12 |
---|---|
[Python] 연결리스트 <Runner 기법> (0) | 2021.05.11 |
[Python] List <세 수의 합> (0) | 2021.05.07 |
[Python] List <빗물 트래핑> (0) | 2021.05.06 |
[Python] List <두 수의 합> (0) | 2021.05.06 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- react-native
- Promise
- 정보보안기사 #실기 #정리
- AsyncStorage
- 파니노구스토
- javascript
- 이탈리안 레스토랑
- 맛집
- 인천 구월동 맛집
- redux
- redux-thunk
- react
- Async
- await
- 인천 구월동 이탈리안 맛집
- Total
- Today
- Yesterday