Leetcode Java Sort Colors
업데이트:
문제
코드
class Solution {
public void sortColors(int[] nums) {
int start = 0;
int end = nums.length - 1;
int idx = 0;
while (idx <= end) {
switch (nums[idx]) {
case 0:
if (nums[start] != 0) {
this.swap(nums, idx, start);
}
start++;
idx++;
break;
case 2:
if (nums[end] != 2) {
this.swap(nums, idx, end);
}
end--;
break;
default:
idx++;
break;
}
}
}
private void swap(int[] nums, int idx1, int idx2) {
int temp = nums[idx2];
nums[idx2] = nums[idx1];
nums[idx1] = temp;
}
}
결과
설명
-
각 색상을 나타내는 숫자인 0, 1, 2로 구성된 주어진 배열을 정렬하는 문제이다.
- 배열의 탐색을 위해 변수들을 정의한다.
- 변수 start는 배열의 첫 인덱스인 0으로 정의한다.
- 변수 end는 배열의 마지막 인덱스인 $nums.length - 1$으로 정의한다.
- 변수 idx는 포인터 역할을 하며, 배열의 첫 인덱스인 0으로 선언한다.
- 변수 idx의 값이 end가 될 때 까지 반복하여 주어진 배열을 정렬하여 문제를 해결한다.
- nums[idx]의 값이 0인 경우, nums[start]의 값이 0이 아닌 값이면 배열 nums의 idx번째 값과 바꾸고 start와 idx의 값을 증가시킨다.
- nums[idx]의 값이 2인 경우, nums[end]의 값이 2가 아닌 값이면 배열 nums의 idx번째 값과 바꾸고 end 값을 감소시킨다.
- 그 외인 nums[idx]의 값이 1인 경우, idx의 값을 증가시킨다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기