๐ง Problems
์ต๋น๊ฐ์ ์ฃผ์ด์ง ๊ฐ ์ค์์ ๊ฐ์ฅ ์์ฃผ ๋์ค๋ ๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ ์ ๋ฐฐ์ด ``array``๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋น๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์. ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ๋ฉด -1์ return ํฉ๋๋ค.
๐ก Solutions
const solution = (array) => {
const frequency = {};
array.forEach(num => {
frequency[num] = (frequency[num] || 0) + 1;
});
const maxFreq = Math.max(...Object.values(frequency));
const modes = Object.keys(frequency).filter(key => frequency[key] === maxFreq);
return modes.length > 1 ? -1 : Number(modes[0]);
};
์ฝ๋ ์ค๋ช
๋จผ์ , ๊ฐ์ฒด๋ฅผ ํ๋ ๋ง๋ค์ด์ค๋๋ค. ``frequency`` ๊ฐ์ฒด๋ ``array`` ๋ฐฐ์ด ์์ ์์๋ฅผ key๋ก, ๊ฐ ์์์ ๋ฐ๋ณต ํ์๋ฅผ value๋ก ๊ฐ์ง๋๋ค. ์ด ๊ฐ์ ``forEach``๋ฅผ ์ฌ์ฉํด ์ ์ฅํด์ค ๊ฒ๋๋ค.
array.forEach(num => {
frequency[num] = (frequency[num] || 0) + 1;
});
ํด๋น ์ฝ๋์ ๋ก์ง์ ๊ฐ๋จํฉ๋๋ค. ``frequency`` ๋ด์ key ๊ฐ์ผ๋ก ``num``์ด ์๋ค๋ฉด, key์ ``num``์ ์ถ๊ฐํ๊ณ value์ 1์ ๋ฃ์ด์ค๋๋ค. ์ด๋ฏธ ``num``์ด ์กด์ฌํ๋ค๋ฉด, ํด๋น value ๊ฐ์ 1์ ๋ํด์ค๋๋ค. ์ด๋ ๊ฒ ``array`` ์์ ์์ ๊ฐฏ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
const maxFreq = Math.max(...Object.values(frequency));
๋ค์ ๋จ๊ณ๋ ์ด๋ค ์์ ๊ฐ์ด ๊ฐ์ฅ ๋ง์ด ๋ฐ๋ณต๋๋์ง ์์๋ด๋ ๊ฒ์ ๋๋ค.
๋ณ์ ``maxFreq``์ ``frequency`` ๊ฐ์ฒด์ value ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅํฉ๋๋ค. ``Math.max()``๋ ๋ฐฐ์ด์ ์ง์ ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ``Object.values()``๊ฐ ๋ฐํํ ๋ฐฐ์ด์ Spread ์ฐ์ฐ์ ``...``๋ก ํผ์ณ์ ์ซ์ ๋ฐ์ดํฐ๋ก ์ ๋ฌํฉ๋๋ค.
const modes = Object.keys(frequency).filter(key => frequency[key] === maxFreq);
return modes.length > 1 ? -1 : Number(modes[0]);
๋ง์ง๋ง์ ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๋ ์ฝ๋์ ๋๋ค. ๋จผ์ , ``filter()``๋ฅผ ์ฌ์ฉํด ``frequency``์ ๊ฐ value์ ``maxFreq`` ๊ฐ์ ๋น๊ตํ ๋ค ๊ฐ์ key๋ฅผ ๋ณ์ ``modes``์ ์ ์ฅํฉ๋๋ค. ์ ์ฅ๋ ๊ฐ์ด 1๊ฐ๋ผ๋ฉด ๊ทธ ๊ฐ ๊ทธ๋๋ก ๋ฐํ, 2๊ฐ ์ด์์ด๋ผ๋ฉด -1์ ๋ฐํํด์ค๋๋ค. ์ด๋, ``Object.keys()``๋ key๋ฅผ ํญ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ฏ๋ก, ์ซ์๋ก ๋ณํํ๊ธฐ ์ํด ``Number()``๋ฅผ ์ฌ์ฉํฉ๋๋ค.
'๐ Jero's Wiki > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ง๋ฃ์์ ์ ํ๊ธฐ (0) | 2025.02.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ๋ถ์์ ๋ง์ (0) | 2025.02.06 |
๐ง Problems
์ต๋น๊ฐ์ ์ฃผ์ด์ง ๊ฐ ์ค์์ ๊ฐ์ฅ ์์ฃผ ๋์ค๋ ๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ ์ ๋ฐฐ์ด array
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋น๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์. ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ๋ฉด -1์ return ํฉ๋๋ค.
๐ก Solutions
const solution = (array) => {
const frequency = {};
array.forEach(num => {
frequency[num] = (frequency[num] || 0) + 1;
});
const maxFreq = Math.max(...Object.values(frequency));
const modes = Object.keys(frequency).filter(key => frequency[key] === maxFreq);
return modes.length > 1 ? -1 : Number(modes[0]);
};
์ฝ๋ ์ค๋ช
๋จผ์ , ๊ฐ์ฒด๋ฅผ ํ๋ ๋ง๋ค์ด์ค๋๋ค. frequency
๊ฐ์ฒด๋ array
๋ฐฐ์ด ์์ ์์๋ฅผ key๋ก, ๊ฐ ์์์ ๋ฐ๋ณต ํ์๋ฅผ value๋ก ๊ฐ์ง๋๋ค. ์ด ๊ฐ์ forEach
๋ฅผ ์ฌ์ฉํด ์ ์ฅํด์ค ๊ฒ๋๋ค.
array.forEach(num => {
frequency[num] = (frequency[num] || 0) + 1;
});
ํด๋น ์ฝ๋์ ๋ก์ง์ ๊ฐ๋จํฉ๋๋ค. frequency
๋ด์ key ๊ฐ์ผ๋ก num
์ด ์๋ค๋ฉด, key์ num
์ ์ถ๊ฐํ๊ณ value์ 1์ ๋ฃ์ด์ค๋๋ค. ์ด๋ฏธ num
์ด ์กด์ฌํ๋ค๋ฉด, ํด๋น value ๊ฐ์ 1์ ๋ํด์ค๋๋ค. ์ด๋ ๊ฒ array
์์ ์์ ๊ฐฏ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
const maxFreq = Math.max(...Object.values(frequency));
๋ค์ ๋จ๊ณ๋ ์ด๋ค ์์ ๊ฐ์ด ๊ฐ์ฅ ๋ง์ด ๋ฐ๋ณต๋๋์ง ์์๋ด๋ ๊ฒ์ ๋๋ค.
๋ณ์ maxFreq
์ frequency
๊ฐ์ฒด์ value ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ฅํฉ๋๋ค. Math.max()
๋ ๋ฐฐ์ด์ ์ง์ ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, Object.values()
๊ฐ ๋ฐํํ ๋ฐฐ์ด์ Spread ์ฐ์ฐ์ ...
๋ก ํผ์ณ์ ์ซ์ ๋ฐ์ดํฐ๋ก ์ ๋ฌํฉ๋๋ค.
const modes = Object.keys(frequency).filter(key => frequency[key] === maxFreq);
return modes.length > 1 ? -1 : Number(modes[0]);
๋ง์ง๋ง์ ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๋ ์ฝ๋์
๋๋ค. ๋จผ์ , filter()
๋ฅผ ์ฌ์ฉํด frequency
์ ๊ฐ value์ maxFreq
๊ฐ์ ๋น๊ตํ ๋ค ๊ฐ์ key๋ฅผ ๋ณ์ modes
์ ์ ์ฅํฉ๋๋ค. ์ ์ฅ๋ ๊ฐ์ด 1๊ฐ๋ผ๋ฉด ๊ทธ ๊ฐ ๊ทธ๋๋ก ๋ฐํ, 2๊ฐ ์ด์์ด๋ผ๋ฉด -1์ ๋ฐํํด์ค๋๋ค. ์ด๋, Object.keys()
๋ key๋ฅผ ํญ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ฏ๋ก, ์ซ์๋ก ๋ณํํ๊ธฐ ์ํด Number()
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
'๐ Jero's Wiki > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ง๋ฃ์์ ์ ํ๊ธฐ (0) | 2025.02.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ๋ถ์์ ๋ง์ (0) | 2025.02.06 |