[Programmers] 특이한 정렬

Jinny·2025년 1월 10일
0
  • 날짜 / 주차-누적 횟수: 2025.01.08(수) / 2주차-17회
  • 사이트 이름: 프로그래머스
  • 사용 언어: 자바스크립트
  • 문제 고유 번호 및 레벨: 120880 / Lev 0
  • 최적 풀이 방법:
    
    function solution(numlist, n) {
      return numlist.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
    }
    • numlist정수 배열을 sort()로 정렬한다.
      • sort(): 배열을 정리하는 함수
        • 기본적으로 배열의 요소를 문자열로 변환한 후 사전순으로 정렬한다.
    • Math.abs(x)는 숫자 x의 절대값을 반환한다.
    • Math.abs(a - n) 는 숫자 a가 기준값 n과 얼마나 떨어져 있는지 계산한다.
      • e.g. n = 5 이고, a = 7 일 때, Math.abs(7 - 5) = 2
      • 두 값의 거리 차이를 계산하여 정렬한다.
        • 음수: a가 b 보다 앞에 온다.
        • 양수: b가 a 보다 앞에 온다.
        • 0: 다음 조건으로 넘아간다.
    • | | b - a
      • ||연산자는 앞의 조건이 0 (false로 간주)일 경우 뒤의 조건을 평가한다.
      • b - a는 값을 내림차순으로 정렬 한다.
  • 배운 개념:
    • Math.abs: 절대값을 이용해 두 숫자 사이의 거리를 계산한다.
    • ||연산자: 첫 조건이 같을 때 두 번째 조건으로 넘어 간다.
profile
세상을 이롭게 하는 프론트엔드 개발자 Jinny

0개의 댓글