75. Sort Colors

Doyeon Kim·2022년 5월 22일

코딩테스트 공부

목록 보기
65/171

문제 링크 : https://leetcode.com/problems/sort-colors/


(간단하게 0,1,2를 오름차순으로 배열하는 문제이다

첨에 테스트케이스 보고 "ㅋㅋ 걍 sort로 정렬하면 되는거 아님?" 이라고 생각해서

class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
return nums.sort()

이렇게 풀었는데

어?

Success
Details
Runtime: 62 ms, faster than 16.77% of Python3 online submissions for Sort Colors.
Memory Usage: 13.9 MB, less than 15.08% of Python3 online submissions for Sort Colors.

이게 되네..?


그렇지만 출제 의도는 이게 아닐거라는거는 알고...

차피 0,1,2를 정렬하면 되는 문제기 때문에

1을 기준으로 하여 로직을 짜 보았다.

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        p0, p2 = 0, len(nums)-1
        p = 0
        
        while p <= p2:
            if nums[p] > 1:
                nums[p], nums[p2] = nums[p2], nums[p]
                p2 -= 1
            elif nums[p] < 1:
                nums[p] ,nums[p0] = nums[p0], nums[p]
                p0 += 1
                p+=1
            else:
                p+=1

간단하게 nums를 탐색하면서
탐색하는 숫자 (P)가 2면 끝쪽으로 배치하고
0이면 인덱스 앞쪽으로 배열하며 while문을 반복한다..

Runtime: 51 ms, faster than 37.78% of Python3 online submissions for Sort Colors.
Memory Usage: 14 MB, less than 15.08% of Python3 online submissions for Sort Colors.

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글