LeetCode - 1365. How Many Numbers Are Smaller Than the Current Number

henu·2023년 9월 1일
0

LeetCode

목록 보기
34/186
post-thumbnail

Solution

var smallerNumbersThanCurrent = function(nums) {
    const sorted = [...nums].sort((a,b) => a-b);

    return nums.map(e => sorted.indexOf(e))
};

Explanation

이 문제는 nums[i]보다 작은 요소들의 개수를 카운팅하는 문제이다.
필자의 접근법은
1. nums를 오름차순으로 정렬한 새로운 배열을 생성한다.
이 경우 정렬된 배열의 인덱스는 해당 인덱스의 요소보다 작은 요소들의 개수가 된다.
예를 들어

nums = [8, 1, 2, 2, 3];
sorted = [1, 2, 2, 3, 8];
// sorted[0]보다 작은 요소의 개수는 0개
// sorted[1]보다 작은 요소의 개수는 1개
// sorted[2]보다 작은 요소의 개수는 2개
// sorted[3]보다 작은 요소의 개수는 2개
// sorted[4]보다 작은 요소의 개수는 4개

위의 예제에서 sorted[3]과 같이 동일한 값은 indexOf 메소드로 처리 가능하다.
indexOf 메소드 사용시 검색 범위를 지정해주지않으면 최소 인덱스값을 리턴하기때문이다.
2. nums에 map 메소드를 사용해서 정렬된 배열의 인덱스 값으로 매핑해주면된다.

0개의 댓글