๐ 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;
}
๋๊ธ