sy1214ei 님의 블로그

[Leet Code] 41. First Missing Positive - Python 본문

[Coding]

[Leet Code] 41. First Missing Positive - Python

sy1214ei 2024. 12. 16. 01:47

https://leetcode.com/problems/first-missing-positive/

Level : Hard
class Solution:
    def firstMissingPositive(self, nums: List[int]) -> int:
        # 1. 음수는 0으로
        for i in range(len(nums)):
            if nums[i] < 0:
                nums[i] = 0
        # 2. 양수는 음수로
        for i in range(len(nums)):
            val = abs(nums[i])
            if 1 <= val <= len(nums):
                if nums[val-1] > 0:
                    nums[val-1] *= -1
                elif nums[val-1] == 0:
                    nums[val-1] = -1 * (len(nums)+1)
            
        # 3. 제일 작은 양수 찾기
        for i in range(1, len(nums)+1):
            if nums[i-1] >= 0: ######### 여기 >= 0 등호!!!
                return i
        # 4. 3에서 못 찾았다면 그 다음꺼가 우리 찾는 수
        return len(nums) + 1