LeetCode - 2724. Sort By

henu·2023년 9월 7일
0

LeetCode

목록 보기
73/186

Solution

var sortBy = function(arr, fn) {
    return arr.sort((a, b) => fn(a) - fn(b))
}

Explanation

일단 코드는 간단하다. 문제의 조건을 다시보면

  • fn은 항상 숫자만 리턴하고 그 숫자로 순서를 결정한다.
  • output 배열은 반드시 fn의 리턴값에 의해 오름차순으로 정렬되어야한다.

즉, fn의 리턴값이 클 수록 배열의 뒤로 간다는 것이다.
위 사실을 이용해서 sort 메소도를 사용하면 정렬이 가능하다.
sort 메소드에 compareFunction이 제공될 경우 요소는 이 함수의 리턴값에 따라 정렬된다.
리턴값 < 0 이면 a, b 순이고 리턴값 > 0 이면 b, a 순이다.
예를 들어
fn(a)가 1이고 fn(b)가 2이면 fn(a) - fn(b)는 -1이다. 그러면 a, b 순이다.
fn(a)가 3이고 fn(b)가 1이면 fn(a) - fn(b)는 2이다. 그러면 b, a 순이다.
우리는 오름차순으로 정렬해야하기때문에 첫 번째 코드로 작성하면 된다.

0개의 댓글