Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PYTHON
- 데이콘
- 프로그래머스
- 편스토랑 우승상품
- 자연어처리
- programmers
- Git
- 편스토랑
- ubuntu
- Baekjoon
- gs25
- hackerrank
- 파이썬
- dacon
- leetcode
- 더현대서울 맛집
- 금융문자분석경진대회
- 캐치카페
- Kaggle
- SW Expert Academy
- 맥북
- 코로나19
- 백준
- AI 경진대회
- Real or Not? NLP with Disaster Tweets
- Docker
- github
- 우분투
- ChatGPT
- 프로그래머스 파이썬
Archives
- Today
- Total
솜씨좋은장씨
[leetCode] 1588. Sum of All Odd Length Subarrays (Python) 본문
Programming/코딩 1일 1문제
[leetCode] 1588. Sum of All Odd Length Subarrays (Python)
솜씨좋은장씨 2020. 12. 7. 00:26728x90
반응형
Given an array of positive integers arr, calculate the sum of all possible odd-length subarrays.
A subarray is a contiguous subsequence of the array.
Return the sum of all odd-length subarrays of arr.
Example 1:
Input: arr = [1,4,2,5,3]
Output: 58
Explanation: The odd-length subarrays of arr and their sums are:
[1] = 1
[4] = 4
[2] = 2
[5] = 5
[3] = 3
[1,4,2] = 7
[4,2,5] = 11
[2,5,3] = 10
[1,4,2,5,3] = 15
If we add all these together we get 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58
Example 2:
Input: arr = [1,2]
Output: 3
Explanation: There are only 2 subarrays of odd length, [1] and [2]. Their sum is 3.
Example 3:
Input: arr = [10,11,12]
Output: 66
Constraints:
- 1 <= arr.length <= 100
- 1 <= arr[i] <= 1000
Solution
class Solution:
def sumOddLengthSubarrays(self, arr: List[int]) -> int:
max_len = len(arr)
arr_len = len(arr)
if max_len % 2 == 0:
max_len = max_len - 1
answer_list = []
for i in range(1, max_len+1, 2):
for j in range(arr_len - i + 1):
answer_list.append(sum(arr[j:j+i]))
return sum(answer_list)
Solution 해설
이 문제는 홀수 길이의 subarray를 모두 구하고 해당 subarray들을 모두 합한 값을 구하는 문제입니다.
먼저 홀수 길이의 subarray의 최대 길이가 몇인지 확인하기위해서 입력 받은 리스트의 길이를 활용하여 구합니다.
입력 받은 리스트의 길이가 짝수이면 1을 뺀 숫자가 최대의 길이
입력 받은 리스트이 길이가 홀수이면 해당 길이가 최대의 길이가 됩니다.
그 다음 이중 for문을 활용하여 각 홀수 길이의 subarray를 구하고
그 subarray의 합을 리스트에 저장해 두었다가 마지막으로 해당 리스트의 합을 return 합니다.
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[leetCode] 1672. Richest Customer Wealth (Python) (0) | 2020.12.09 |
---|---|
[leetCode] 1678. Goal Parser Interpretation (Python) (0) | 2020.12.08 |
[leetCode] 1436. Destination City (Python) (0) | 2020.12.06 |
[leetCode] 744. Find Smallest Letter Greater Than Target (Python) (0) | 2020.12.05 |
[leetCode] 82. Remove Duplicates from Sorted List II (Python) (0) | 2020.12.02 |
Comments