반응형
https://leetcode.com/problems/number-of-ways-to-split-array
prefix sum 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. length 선언 후 nums의 길이를 저장합니다.
2. 누적합을 저장할 배열 sums를 선언 후 length만큼 0으로 초기화합니다.
3. valid_splits를 선언 후 0으로 초기화합니다.
4. sums의 누적합을 구해 갱신해줍니다.
📔 풀이과정
0에서 length - 2까지 for loop를 수행하며 split된 left_sum, right_sum을 구해줍니다. 0부터 i까지의 합이 sum[i], i+1부터 끝까지의 누적합은 sum[length-1] - sum[i]가 되므로 O(n)만에 valid 한 splits인지 구할 수 있습니다.
📔 정답 출력 | 반환
valid_splits를 반환합니다.
📕 Code
📔 Python3
class Solution:
def waysToSplitArray(self, nums: List[int]) -> int:
length = len(nums)
sums = [0] * length
sums[0] = nums[0]
valid_splits = 0
for i in range(1, length):
sums[i] = nums[i] + sums[i-1]
for i in range(0, length-1):
left_sum = sums[i]
right_sum = sums[length-1] - sums[i]
if left_sum >= right_sum:
valid_splits += 1
return valid_splits
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(Python3) - LeetCode (Medium) : 2559. Count Vowel Strings in Ranges (0) | 2025.01.02 |
---|---|
(Python3) - LeetCode (Medium) : 2466. Count Ways To Build Good Strings (0) | 2024.12.31 |
(Python3) - LeetCode (Hard) : 1639. Number of Ways to Form a Target String Given a Dictionary (0) | 2024.12.29 |
(Python3) - LeetCode (Medium) : 3152. Special Array II (1) | 2024.12.09 |
(Python3) - 백준(BOJ) 21758 : 꿀 따기 (0) | 2024.11.13 |