문제 링크 : 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.