[CodeKata] #07, 과반수(majority, more than a half)가 넘은 숫자를 반환하기

April·2021년 5월 5일
0
post-thumbnail

문제

숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.

예를 들어,

nums = [3,2,3]
return 3

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

🎈가정

nums 배열의 길이는 무조건 2개 이상


💡 풀이

  1. 인자로 받은 배열을 객체로 변환. key는 배열안의 숫자, value로는 반복되는 횟수
const numsObj = {
  1: 1,
  2: 2,
  3: 1,
};
  1. numsObj 객체의 key값에 Object.keys(numsObj) [ '1', '2', '3' ]
  2. value를 비교 후 리턴하기

✅ 코드

const moreThanHalf = (nums) => {
  const numsObj = {};
  for (let num of nums) {
    numsObj[num] == undefined ? numsObj[num] =  1 : numsObj[num]++;
  }
  const objKey = Object.keys(numsObj)
  let result=0;
  for (let i=0; i<objKey.length-1; i++) {
    numsObj[objKey[i]] < numsObj[objKey[i+1]] 
     result = [objKey[i+1]]
  }
  return Number(result);
}

const nums = [1,3,2,2,3,3,3];
console.log(moreThanHalf(nums));

🎈 What i learned

  • 문제를 풀다보면 난 항상 내가 잘 아는 문법만 사용하는 것 같아 스스로가 아쉽다..
  • 다른 사람들은 .reduce() 사용 등 다른 방법으로도 푸는데.. 내가 알고있는 함수?메소드?가 적어서 그런것 같다 😥
  • 더 다양한 함수?메소드?를 익힐 수 있도록 해야겠다

JS_Reference

profile
🚀 내가 보려고 쓰는 기술블로그

0개의 댓글