숫자로 이루어진 배열인 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 : _ }