CodeKata

wonkeunC·2021년 5월 4일
0

CodeKata

목록 보기
1/3
post-thumbnail

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

예를 들어,

나의 코드

// 예외처리한 것들 (안 해도 됐었음...)
// const nums = [3,4,4,3]
// const nums = [1,2,3]
// const nums = []
const nums = [3, 4, 3]
function moreThanHalf(nums) {
  const countNums = {};
  let resultNum;
  //정렬
  const sortedNums = nums.sort(function(a, b) {
    return a - b;
  });
  //개수 세는 for문
  for (let i = 0; i < sortedNums.length; i++) {
    if (!countNums[sortedNums[i]]) {
      countNums[sortedNums[i]] = 0;
    }
    countNums[sortedNums[i]]++
  }
  //reduce로 개수 세기
  // const countNums = sortedNums.reduce((obj,el) => {
  //     if (!obj[el]) {
  //       obj[el] = 0;
  //     }
  //     obj[el]++
  //     return obj
  //   }, {});
  //최대value의 key리턴
  resultNum = Object.keys(countNums).reduce((a, b) => countNums[a] > countNums[b] ? a : b);
  return parseInt(resultNum);
}

// 배열 정렬시키기

[1 ,3 ,5 ,2 ,3] => [1, 2, 3, 3, 5]

const sortedNums = nums.sort(function(a, b) {
return a - b;
});
"작은 값"에서 "큰 값" 차례대로 정렬된다. (return a - b)
"큰 값"에서 "작은 값" 차례대로 정렬된다 (return b - a)

for() OPTION 1

//개수 세는 for문

let countNums = {};
_______________________________________________________
  1 ㅣ   for (let i = 0; i < sortedNums.length; i++) {
  2 ㅣ   if (!countNums[sortedNums[i]]) {
  3 ㅣ      countNums[sortedNums[i]] = 0;
  4 ㅣ    }
  5 ㅣ     countNums[sortedNums[i]]++
  6 ㅣ   }

1 ㅣ 정렬 된 배열을 사용해서 배열의 길이 만큼 반복한다.
2 ㅣ 만약 countNums 빈 객체에 [정렬된 배열에 값이 없다면]
3 ㅣ 객체의 key는 {"0" : }
4 |
5 | 배열안에 값이 존재 한다면 배열의 길이 만큼 key값이 증가한다.
ex : 3개 있다면 {1 : _ , 2 : _, 3 : _ }

profile
개발자로 일어서는 일기

0개의 댓글