loading
본문으로 바로가기

문제 설명

Medium

  • 빨간색, 흰색 또는 파란색으로 칠해진 n개의 객체가 있는 배열 nums가 주어지면 동일한 색상의 객체가 인접하도록 빨간색, 흰색, 파란색 순서로 색상을 정렬합니다.
  • 정수 0, 1, 2를 사용하여 각각 빨간색, 흰색, 파란색을 나타냅니다.
  • 라이브러리의 정렬 기능을 사용하지 않고 이 문제를 해결해야 합니다.(sort 함수를 사용 x)

 

**문제에서 요구하는 풀이는 정수 0, 1, 2가 주어지는데 빨간색, 흰색, 파란색이다.  해당 순서대로 정렬을 하는 것으로 오름차순으로 정렬 후 반환하는 것. 하지만 sort() 함수를 사용하지 않고 해결하는 것이 포인트이다.

 

 

접근

var sortColors = function(nums) {
    let temp;
    for (let i=0; i<nums.length; i++) {
        for (let j=i+1; j<nums.length; j++) {
        	//for문의 시작 지점으로 nums[i]와 nums[i+1]을 비교한다. nums[i]가 더 클때,
            if (nums[i] > nums[j]) {
            	//temp 변수에 nums[i]를 저장하고, nums[i]에 nums[i+1] 값을 넣고, 
                //nums[i+1]에 저장해두었던 temp 값을 넣는다.
                temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
    }
}

 

정렬 과정 출력

 

nums = [2,0,2,1,1,0]

1. [ 0, 2, 2, 1, 1, 0 ]
2. [ 0, 2, 2, 1, 1, 0 ]
3. [ 0, 2, 2, 1, 1, 0 ]
4. [ 0, 2, 2, 1, 1, 0 ]
5. [ 0, 2, 2, 1, 1, 0 ]
6. [ 0, 2, 2, 1, 1, 0 ]
7. [ 0, 1, 2, 2, 1, 0 ]
8. [ 0, 1, 2, 2, 1, 0 ]
9. [ 0, 0, 2, 2, 1, 1 ]
10. [ 0, 0, 2, 2, 1, 1 ]
11. [ 0, 0, 1, 2, 2, 1 ]
12. [ 0, 0, 1, 2, 2, 1 ]
13. [ 0, 0, 1, 2, 2, 1 ]
14. [ 0, 0, 1, 1, 2, 2 ]
15. [ 0, 0, 1, 1, 2, 2 ]

 

 

Sort Colors - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com