Code Kata #9 가장 자주 등장하는 숫자 구하기

Somi·2021년 7월 2일
0

CODE KATA

목록 보기
9/12
post-thumbnail

💁 문제분석

nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요.

nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]

문제를 보자마자 객체로 접근해야겠다는 생각을 했다. 배열로 접근할 생각도 했으나 그렇게 하면 어떤 수가 얼만큼 있는지 파악하기가 쉽지 않겠다고 느꼈다.
그런데 난관은 그 다음에 있었당...
객체로는 만들었는데, 객체 안에서 밸류값의 내림차순으로 요소들을 어떻게 나열해야할지 몰라 난감했다. 신나게 구글링을 했지만 뾰족한 수는 보이지 않아 이틀연속으로 재상님께 SOS를 청했다.

👍 재상님의 코드

function topK(nums, k) {
  // 여기에 코드를 작성해주세요.

const obj = {}
  for (num of nums) {
    if(obj[num] !== undefined){
       obj[num]++;
       } else{
         obj[num] = 1
         console.log(obj)
       }
  }
  
  const arr = Object.keys(obj).sort(
    function(a,b){return obj[b] - obj[a]})

  
  let result = arr.slice(0, k)
  return result.map(x => Number(x))
}

아름답다....
sort를 객체에도 쓸 수 있다는 사실...! 그 내부에 함수를 불러 내림차순으로 깔끔하게 정리할 수 있었다.

느낀점

요즘 위스타그램 마무리를 하고 리액트를 공부하면서 코드카타에 신경쓸 겨를이 없어지고 있당... 그래서 조금 시도하다가 안되면 바로 동기들한테 달려가는 습관이 생긴 것 같아 아쉽다. 그래도 타인의 코드를 보면서 배우는 점도 많다. 그 발란스를 잘 잡는 것이 중요하다고 생각한다.

0개의 댓글

관련 채용 정보