์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ธ nums๋ฅผ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค.
์ซ์์ค์์ ๊ณผ๋ฐ์(majority, more than a half)๊ฐ ๋์ ์ซ์๋ฅผ ๋ฐํํด์ฃผ์ธ์.
๋ฐฐ์ด์์ ์๋ ๋ฌธ์ ์ค์ ๊ณผ๋ฐ์ ์์๋๋ก ๋ฐฐ์ด์ ์ ๋ ฌํด์
๋งค๊ฐ๋ณ์์์ ์๋ ์ซ์๋งํผ์ ๊ฐ์ ๋ฐํํ๋ค.
function moreThanHalf(nums) {
let majority = nums.length / 2; //3.5
for (let i = 0; i < nums.length; i++) {
let count = 0;
for (let j = 0; j < nums.length; j++) {
if (nums[i] === nums[j]) {
count += 1
}
}
if (count > majority) {
return nums[i]
}
}
}
majority๋ผ๋ ๋ณ์์ ๊ฐ์ nums์ ๊ธธ์ด/2 ์ด๋ค.
let i = 0; i๋ nums์ ๊ธธ์ด ๋งํผ ๋ฐ๋ณต์ํค๊ณ
let count = 0;์ผ๋ก ์ธํ
ํด์ฃผ๊ณ
์ด์ค ํฌ๋ฌธ์ผ๋ก j =0;์ด๊ณ j< nums.length ๊ธธ์ด ๋ฐํผ ๋ฐ๋ณต์ํจ๋ค.
๋ง์ฝ nums์ i์ธ๋ฑ์ค๊ฐ๊ณผ num์j์ธ๋ฑ์ค๊ฐ์ด ๊ฐ์ผ๋ฉด count์ 1์ ๋ํด์ ํ ๋นํด์ค๋ค.
ํฌ๋ฌธ์ด ๋ค ๋๋ฉด ์นด์ดํธ๊ฐ์ด ๊ณผ๋ฐ์๊ฐ๋ณด๋ค ํฌ๋ฉด
num์ ์ธ๋ฑ์ค i๊ฐ์ ๋ฆฌํดํด์ค๋ค.
function moreThanHalf(nums) {
let half = nums.length /2;
let cntNums = nums.reduce(function(allNums, num){
allNums[num] = (allNums[num] || 0) + 1
return allNums
}, {});
let maxCntNum = 0;
//let half = Object.keys(cntNums).length/ 2;
// ์ฌ๊ธฐ์ half ๊ตฌํ๋ฉด ์ ๋จ ๊ฐ์ฒด length ๊ตฌํ๊ธฐ ์ฐธ์กฐ
for(let i in cntNums){
// if(maxCntNum < cntNums[i]){
// maxCntNum = i;
// }
maxCntNum = maxCntNum < cntNums[i] ? i : maxCntNum
}
return Number(maxCntNum) > half ? Number(maxCntNum) : 0;
}
๋ด๊ฐ ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์๊ฒ๋ ๋ฉ์๋์ ๋ํด ์๊ฐํ๊ฒ ๋ค. (์์ฃผ ๊ฐ๋จํ)
๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง reduceํจ์๋ฅผ ์คํํ๊ณ , ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค.
์ซ์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ค๋๋ค.