문제 설명
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 ]
'프론트엔드 개발[Front-End Development] > Coding Test' 카테고리의 다른 글
[CT-L] 49. Group Anagrams (0) | 2022.11.22 |
---|---|
[CT-L] 347. Top K Frequent Elements (0) | 2022.11.21 |
[CT-L] 88. Merge Sorted Array (0) | 2022.11.21 |
[CT-L] 215. Kth Largest Element in an Array (0) | 2022.11.21 |
[CT-L] 122. Best Time to Buy and Sell Stock II (0) | 2022.11.21 |