n개의 객체가 있는 배열이 있다고 가정합니다. 이들은 빨강, 흰색 또는 파랑으로 채색되어 있으며 같은 색상의 개체가 인접하도록 제자리에 정렬합니다. 그래서 빨간색, 흰색, 파란색의 순서로 색상을 지정합니다. 여기서는 0, 1, 2와 같은 숫자를 사용하여 빨강, 흰색, 파랑을 각각 나타냅니다. 따라서 배열이 [2,0,2,1,1,0]과 같으면 출력은 [0,0,1,1,2,2]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다.
- 낮음:=0, 중간:=0 및 높음:=배열 길이 – 1로 설정
- 중간 <=높음
- arr[mid] =0이면 arr[mid]와 arr[low]를 교환하고 low와 mid를 1씩 증가시킵니다.
- 그렇지 않으면 arr[mid] =2일 때 arr[high]와 arr[mid]를 교환하고 high를 1만큼 감소
- 그렇지 않으면 중간에 1씩 증가
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def sortColors(self, nums): low = 0 mid = 0 high = len(nums)-1 while mid<=high: if nums[mid] == 0: nums[low],nums[mid] = nums[mid],nums[low] low+=1 mid += 1 elif nums[mid] == 2: nums[high], nums[mid] = nums[mid], nums[high] high-=1 else: mid += 1 return nums ob1 = Solution() print(ob1.sortColors([2,0,2,1,1,0]))
입력
[2,0,2,1,1,0]
출력
[0,0,1,1,2,2]