JS - codeKata

oceanzoo·2021년 6월 3일
0
post-thumbnail

codeKata를 진행하면서 새롭게 알게된 개념과 나의 풀이와 동기분의 답안의 일부분

코드카타 문제

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

👉 나의 답안

function topK(nums,k){
  const numberMap =  {
    1 : 0,
    2: 0,
    3: 0,
  }
  
  let answer = []
  let result
  
  for(let i=0; i<nums.length; i++){
    if(nums[i] in numberMap){
      numberMap[nums[i]]++
    }else{
      numberMap[nums[i]]=1
    }
  }
  
  let numbers = Object.keys(numberMap).sort((a,b)=> numberMap[b]-numberMap[a])

  for(let j=0; j<k; j++){
    answer.push(Number(numbers[j]))
    
  }
  return answer
}

코드카타 짝이신 동기분께서 Map을 이용해서도 풀어보라고 권유해주셔서 공부하게 된 Map

Map

Map객체는 키-값 쌍을 저장하며 각 쌍의 삽입 순서도 기억하는 콜렉션이다.
요소의 삽입 순서대로 원소를 순회한다. for...of 반복문은 각 순회에서 [key, value]로 이루어진 배열을 반환한다.

Map.prototype.size : Map 객체에 들어있는 key/value pair의 수를 반환한다.

Map.prototype.clear() : Map 객체의 모든 key/value pair를 제거한다.

Map.prototype.delete(key): 주어진 키와 해당되는 값을 제거하기 전에 Map.prototype.has(key)가 반환했던 값을 반환한다. 그 후 Map.prototype.has(key)는 false를 반환한다.

Map.prototype.forEach(callbackFn): 객체 안에 존재하는 각각의 key/value pair 에 집어넣은 순서대로 callbackFn을 부른다.

Map.prototype.get(key) : 주어진 키에 해당되는 값을 반환하고, 만약 없으면 undefined를 반환한다.

Map.prototype.has(key) : 객체 안에 주어진 key/value pair가 있는 지 검사하고 Boolean값을 반환한다.

Map.prototype.set(key,value) : 객체에 주어진 키에 값을 집어넣고 객체를 반환한다.

👉 내가 object를 통해 구현한 코드를 나의 코드카타 짝은 Map을 통해 구현하였다.

const numberMap = new Map();
for (const num of nums) {
  if (numberMap.has(num)) {
    numberMap.set(num, numberMap.get(num) + 1);
  } else {
    numberMap.set(num, 1);
  }
}

아직은 사용이 익숙하지 않아서 앞으로 Map을 자주 사용해봐야겠다.

profile
준비된 개발자를 위한 날갯짓 🦋

0개의 댓글