[LeetCode] How Many Numbers Are Smaller Than the Current Number

준규·2022년 8월 19일
0

숫자가 들어있는 숫자 배열 nums 가 주어진다고 한다

nums의 요소중 자기 자신을 제외한 나머지 요소중에서 자신 보다 작은 값인 요소의 갯수를 배열에 넣어서 리턴하는 문제이다

이때 갯수 값은 자기 자신의 인덱스와 같은 인덱스여야 한다

Example을 보자

예를 들어 nums = [6,5,4,8] 이라면

index = 0 요소인 6보다 작은 값의 갯수는 2이고 이 값은 result 배열의 인덱스 0번에 들어가야한다

const smallerNumbersThanCurrent = function(nums) {
    let result = [];
    
    let sortednums = [...nums];
    sortednums.sort((a,b) => a - b);
    
    for(let i = 0; i < nums.length; i++) {
        result.push(sortednums.indexOf(nums[i]));
    }
    return result;  
};

어떻게 풀까 고민하다가 정렬을 해서 풀어보기로 했다

정렬하기전 요소의 인덱스 값을 알고 있어야하므로

따로 배열을 복사를 해서 정렬을 해주어서 sortednums 에 할당해주었다

만약 nums = [8,1,2,2,3] 이라면 sortednums = [1,2,2,3,8]이 된다

그 후 nums를 순회하면서 result 배열에 sortednums안에서 nums[i]의 인덱스값을 넣어주면 된다

nums를 오름차순으로 정렬해주었기 때문에 nums[i]의 sortednums 배열안에서의 인덱스 값 자체가 nums[i] 값 보다 작은 값의 갯수가 된다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글