AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

다중 레벨 정렬 - 우선순위 기반 정렬

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 대상자: JavaScript 개발자, 데이터 정렬 알고리즘을 활용하는 프로그래머
  • 난이도: 중급 (정렬 함수와 조건식 활용)

핵심 요약

  • 다중 레벨 정렬은 Array.prototype.sort()를 사용하여 우선순위 기준을 적용해야 하며, || 연산자로 조건을 간결하게 표현 가능
  • 주요 정렬 기준: 점수 내림차순 → 참여일자 오름차순 (동일 점수 시, 이전 기록 우선)
  • 정렬 조건식 예시: scores.sort((a,b) => (b.score - a.score) || (a.updatedAt - b.updatedAt))

섹션별 세부 요약

1. 문제 정의 및 단일 기준 정렬

  • 점수 기준으로 내림차순 정렬: scores.sort((a,b) => b.score - a.score)
  • 동일 점수의 경우, 참여일자로 정렬하지 않으면 공정성 문제 발생
  • 예시: John, Bob, Dave는 동일 점수로 정렬되지만, 참여일자 기준이 무시됨

2. 잘못된 접근: 두 번의 정렬

  • scores.sort((a,b) => b.score - a.score)scores.sort((a,b) => a.updatedAt - b.updatedAt)
  • 결과: 마지막 정렬 기준(참여일자 오름차순)만 반영되어 불공정한 결과 발생
  • 예시: Dave(2024-05-30)가 John(2024-06-01)보다 뒤로 정렬됨

3. 다중 조건 정렬 구현

  • 조건식:

```javascript

scores.sort((a,b) => {

if (a.score !== b.score) return b.score - a.score;

return a.updatedAt - b.updatedAt;

});

```

  • 결과: 점수 내림차순 → 참여일자 오름차순으로 공정한 최종 순위 생성

4. 간결한 구현: `||` 연산자 활용

  • scores.sort((a,b) => (b.score - a.score) || (a.updatedAt - b.updatedAt))
  • 장점: 코드 간결화, 동일 점수 시 참여일자로 자동 정렬

결론

  • 다중 레벨 정렬을 위해 sort 함수의 조건식에 || 연산자를 활용하여 우선순위 기준을 명확히 설정해야 함
  • 공정한 결과를 위해, 주요 정렬 기준과 보조 기준을 명시적으로 정의해야 하며, 단순한 두 번의 정렬은 잘못된 결과를 초래할 수 있음