반응형
https://leetcode.com/problems/special-array-ii
부분합으로 해결한 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 어떤 그룹에 속해있는지 저장하기 위해 prefix_sum을 선언 후 nums의 길이만큼 초기화해줍니다.
- 같은 홀짝 쌍 누적 기록:
prefix_sum 배열을 초기화하고, nums의 인접한 원소를 비교하여 홀짝이 같은 경우를 누적합니다.- 예: nums = [3, 4, 1, 2, 6]이라면 prefix_sum = [0, 0, 0, 0, 1]
→ 인덱스 4에서 2와 6이 같은 홀짝이므로 prefix_sum[4] = 1
- 예: nums = [3, 4, 1, 2, 6]이라면 prefix_sum = [0, 0, 0, 0, 1]
2. 정답을 저장할 빈 배열 answer를 초기화합니다.
📔 풀이과정
1. 각 쿼리에 대해, query[0]부터 query[1] 구간에서 같은 홀짝인 쌍의 개수를 확인합니다.
2. prefix_sum[query[1]] - prefix_sum[query[0]] > 0이라면, 해당 구간에 같은 홀짝 쌍이 존재하므로 False를 추가합니다.
3. 그렇지 않다면 True를 추가합니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
class Solution:
def isArraySpecial(self, nums: List[int], queries: List[List[int]]) -> List[bool]:
prefix_sum = [0] * len(nums)
answer = []
for i in range(1, len(nums)):
if nums[i] % 2 == nums[i-1] % 2:
prefix_sum[i] = prefix_sum[i-1] + 1
else:
prefix_sum[i] = prefix_sum[i - 1]
for query in queries:
if prefix_sum[query[0]] == prefix_sum[query[1]]:
answer.append(True)
else:
answer.append(False)
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(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) - 백준(BOJ) 21758 : 꿀 따기 (0) | 2024.11.13 |
(C++) - LeetCode (easy) 746. Min Cost Climbing Stairs (0) | 2023.07.01 |
(C++) - LeetCode (easy) 724. Find Pivot Index (0) | 2023.06.25 |