코딩테스트/Python

[LeetCode] 1493. Longest Subarray of 1's After Deleting One Element

swwho 2025. 4. 27. 02:16
728x90
반응형

🔗 Problem Link

https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/description/


❔Thinking

  • 0과 1로 숫자 배열 nums가 주어질 때, 0 한 개를 제거하여 만들 수 있는 가장 긴 1 부분수열의 길이를 반환한다.
    • [1,1,0,1] 이라면 111이므로 3 반환

💻Solution

def longestSubarray(self, nums: List[int]) -> int:
    delete_cnt = 1
    left = 0
    longest_len = 0
    for right in range(len(nums)):
        if nums[right] == 0:
            delete_cnt -= 1
        while delete_cnt < 0:
            if nums[left] == 0:
                delete_cnt += 1
            left += 1
        longest_len = max(longest_len, right-left)
    return longest_len

🗝️keypoint

  1. 현시점에서 0을 제거할 수 있는 횟수를 delete_cnt로 기록하고, 이를 0이상의 값으로 유지하면서 window를 갱신한다.