<๋์ ํ์ด>
function solution(array) {
const set = new Set(array);
const map = new Map([...set].map(v => [v, 0]));
array.map(v => map.has(v) && map.set(v, map.get(v) + 1))
const countArr = [...map.values()];
let resultArr = [];
let maxNum = Math.max(...map.values());
for (let i = 0; i < countArr.length; i++) {
maxNum === countArr[i] && resultArr.push(countArr[i])
}
const index = countArr.findIndex(v => v === maxNum);
return resultArr.length > 1 ? -1 : [...map.keys()][index];
}
set ์ ์ด์ฉํด์ ์ค๋ณต๋์ง ์๋ ์๋ฅผ ๊ตฌํ ํ,
set ํ ์ซ์๋ค์ key๋ก, ์ด๊ธฐ๊ฐ 0์ value๋ก map์ผ๋ก ๋ง๋ค์ด์คฌ๋ค.
map ์ด ์๋ค๋ฉด value๋ฅผ +1 ํด์ ๋ค์ set ํด์คฌ๋ค.
๊ทธ๋์ count ํ value ๋ค์ ๊ฐ์ง๋ map์ด ์์ฑ๋๋ค.
์ฌ๊ธฐ์ ์ต๋๊ฐ์ ๊ตฌํ ํ ์ต๋น๊ฐ์ ๋ชจ์์ length ๋ฅผ ๋น๊ตํ๋๋ฐ,
๋ค ํต๊ณผํ๊ณ ๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋
=> ๊ทธ๋ฅ sort ๋ฅผ ํตํด ์ค์ง์ ๋ค์, [0] ๊ณผ [1] ์ ๋น๊ตํด ๊ฐ์ผ๋ฉด -> ์ต๋น๊ฐ 2๊ฐ ์ด์, ๋ค๋ฅด๋ฉด ์ต๋น๊ฐ 1๊ฐ ๋ก ๊ฒฐ๋ก ์ ๋ด๋ ธ์ด๋ ๋ ๋ป ํ๋ค.
(์ด ๋ถ๋ถ์ด ์ฝ๋๊ฐ ๋์ด๋จ)
map ์ ์์๋ฅผ ๊ธฐ์ตํ๊ธฐ์ ์ต๋น๊ฐ์ด ํ๋๋ผ๋ฉด, ๊ฐ์ index ๋ฅผ ๊ฐ์ง key ๋ฅผ ์ฐพ์์ ๋ฐํํด์คฌ๋ค.
<๋ ๊ด์ฐฎ๋ค๊ณ ์๊ฐ๋๋ ํ์ด>
function solution(array) {
let m = new Map();
for (let n of array) m.set(n, (m.get(n) || 0)+1);
m = [...m].sort((a,b)=>b[1]-a[1]);
return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}
๊ทธ๋์ ๋ ์ด ๋ฌธ์ ํ๋ฌ ์ ์ฏค์ ๋์ ํ์ ๋ ๋๋ฌด ๋ณต์กํ๊ณ ์ด๋ ต๊ฒ ๋๊ปด์ ธ์
ํ- ๋์๊ฐ ์ด๋ด๋ก ๊ณ ๋ฏผํ๋ค๊ฐ ํฌ๊ธฐํ์๋๋ฐ,
์ง๊ธ ๋ณด๋ map ์ value ์ key ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ธ์ค๋์ง๋ง ์๋ฉด ๋์์ง ์์ ๊ฒ ๊ฐ๋ค.