[인프런 워밍업 클럽 2기 CS] 특별 미션

[인프런 워밍업 클럽 2기 CS] 특별 미션

회사에서 야근 이슈로 참여하지 못했던 중간 점검을 만회할 수 있는 기회를 주시다니 감사합니다🥰

 

특별 미션)  실수로 워밍업 클럽 출석을 빼먹었는데 우연히 데이터를 수정할 수 있는 권한이 주어졌습니다. 러너분의 이름(name)과 출석수(count)가 저장된 배열에서 여러분(나)의 데이터를 퀵정렬을 이용해 오름차순 정렬하고 가장 첫 번째 데이터인 여러분의 출석수를 변경하도록 코드를 작성해주세요. (퀵정렬 구현 부분도 변경)

function quickSort (arr, left, right) {
  if (left < right) {
        let index = divide(arr, left, right);
        quickSort(arr, left, index - 1);
        quickSort(arr, index + 1, right);
    }
}

function divide(arr, left, right) {
    let rightCnt= arr[right].count; 
    let leftIndex = left - 1;

    for (let i = left; i < right; i++) {
        if (arr[i].count <= rightCnt) {
            leftIndex++;
            [arr[leftIndex], arr[i]] = [arr[i], arr[leftIndex]]; 
        }
    }
    [arr[leftIndex + 1], arr[right]] = [arr[right], arr[leftIndex + 1]]; 
    return leftIndex + 1;
}

let user1 = { name: "홍길동", count: 5 };
let user2 = { name: "임꺽정", count: 4 };
let user3 = { name: "이순신", count: 3 };
let user4 = { name: "나", count: 1 };
let user5 = { name: "짱구", count: 5 };

let arr = [user1, user2, user3, user4, user5]

console.log("===== 정렬 전 =====");
console.log(arr);

quickSort(arr, 0, arr.length - 1);
arr[0].count = 5

console.log("===== 정렬 후 =====");
console.log(arr);


[예상 결과]

===== 정렬 전 =====
[
  { name: '홍길동', count: 5 },
  { name: '임꺽정', count: 4 },
  { name: '이순신', count: 3 },
  { name: '나', count: 1 },
  { name: '짱구', count: 5 }
]
===== 정렬 후 =====
[
  { name: '나', count: 5 },
  { name: '이순신', count: 3 },
  { name: '임꺽정', count: 4 },
  { name: '홍길동', count: 5 },
  { name: '짱구', count: 5 }
]

 

댓글을 작성해보세요.

채널톡 아이콘