๐ section05 - 6 - ํ๊ธํ์ฅ
ํฌํ์ฉ์ง๋ฅผ ๋ณด๊ณ ์ด๋ค ๊ธฐํธ์ ํ๋ณด๊ฐ ํ๊ธํ์ฅ์ด ๋์๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ฐ ์ ํ์ ํด์ฌ(hash)๋ก ํ๋ฉด๋๋ค. JS์์ hash ๋ฌธ์ ๋ key:value ํํ์ธ object๋ก ํ๋ฉด ๋ ์ค ์์๋๋ฐ, ES6 ๋ฌธ๋ฒ์ ์๋ก์ด ์๋ฃ๊ตฌ์กฐ์ธ Map ํ์ผ๋ก ํธ๋๊ฒ์ด ๋ ์ฌ์ ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก object์ key๋ string | symbolํ๋ง ๊ฐ๋ฅํ์ง๋ง Map์ key๋ ํจ์, ๊ฐ์ฒด, ๋ชจ๋ ๊ธฐ๋ณธ ์์๋ฅผ ํฌํจํ ์ ์๋ค. ๋ํ object๋ nonIterable์ด๋ผ์ for๋ฌธ ๋์ Object.entries() | Object.keys() | Object.values()๋ฅผ ์ฌ์ฉํ์ง๋ง Map์ iterable ํ๊ธฐ ๋๋ฌธ์ for๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค. ๋ํ, object์ ์์๋ random์ด์ง๋ง, Map์ ์์๋ sequenceํ๋ค.
Map๊ณผ object์ ์ฐจ์ด๋ฅผ ๋ ๋ณด๊ณ ์ถ๋ค๋ฉด MDN์ ์ฐธ๊ณ ํ์. ์๊ณ ๋ฆฌ์ฆ์์ Map์ฒ๋ผ key:valueํ์ iterableํ ์ ์๋ค๋ ํน์ง๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์ฌ์ฉ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
- ํฌํ์ฉ์ง๋ฅผ
hash๊ฐ์ผ๋ก ๊ฐ๊ฐ ์ ์ฅํ๋ค. - ๋ฐ๋ณต๋ฌธ์ผ๋ก
key, value๋ฅผ ์ํํ๋ฉด์ ๊ฐ์ฅ ๋ง์ ํฌํ์๋ฅผ ๊ฐ์ง ํ๋ณด๋ฅผ ์ต๋ ํ๋ณด๋ก ๊ฐฑ์ ์ํจ๋ค.
let n = 15;
let votes = "BACBACCACCBDEDE";
console.log(solution(n, votes));
function solution(n, votes){
let vote = new Map();
let maxVote = Number.MIN_SAFE_INTEGER;
let maxCandidate;
for (let x of votes){
if (vote.has(x)) vote.set(x, vote.get(x)+1);
else vote.set(x, 1);
}
vote.forEach((numberOfVote, candidate) => {
if(numberOfVote>maxVote) maxVote=numberOfVote, maxCandidate=candidate;
})
return maxCandidate;
}
๋๊ธ