본문 바로가기
LeetCode

1365. How Many Numbers Are Smaller Than the Current Number

by 싼쵸 2022. 6. 3.
반응형

문제

 nums 안에 요소 하나씩 다른 요소들과 비교해서 비교 기준이 되는 인자보다 몇 개의 요소가 작은지 검사해 결괏값을 낸다.

 

내 현재 풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var smallerNumbersThanCurrent = function(nums) {
    let arr = []
    let cnt = 0;
    for(let i of nums){
        for( let j = 0; j < nums.length; j++ ){
            if(i > nums[j]){
                cnt++;
            }
        }
        arr.push(cnt)
          cnt = 0;
    }
  
    return arr
};

되게 단순하게 생각해 풀었다. 인자 하나씩 꺼내서 다음 for문을 통해 하나씩 비교한 후 배열에 담아 리턴했다.

 

내 예전 풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var smallerNumbersThanCurrent = function(nums) {
let res = []


    for(let i =0; i < nums.length; i++){
        let com = nums[i]
        let cnt = 0;
        for(let j = 0; j < nums.length; j++){
            if(com > nums[j]){
            cnt++;
           
        } 
        

        }
     console.log(cnt)    
        res[i] = cnt;
    }
   

    return res;
};

예전에도 똑같이 풀이했다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ다른 방법이 없을까 고민되긴 한다.

 

다른 사람 풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
const smallerNumbersThanCurrent = nums =>
  nums.map(n =>
    new Map(
      [...nums]
        .sort((a, b) => b - a)
        .map((val, idx) => [val, nums.length - idx - 1]),
    ).get(n),
  );

Map를 써서 풀이한 게 충격적이다!!! 이렇게 아래 그림처럼 담아진다. 그다음 get를 이용해 value 값만 뽑아냈다.

 

 

 

반응형

댓글