์ฃผ์ด์ง ๋ฌธ์์ด์์ ๊ฐ ๋ฌธ์๊ฐ ๋ช ๋ฒ ๋ฑ์ฅํ๋์ง ์ธ์ด๋ผ. ๊ฒฐ๊ณผ๋ ๊ฐ์ฒด ํํ๋ก ๋ฐํํ๋ค.
function countCharacters(s) {
let result = {};
[...s].forEach((item) => {
if (!result[item]) result[item] = 1;
else result[item] += 1;
});
return result;
}
๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๊ฐ์ฒด result๋ฅผ ๋ง๋ ๋ค.
๋ฐฐ์ด๋ก ๋ฐ๊พผ s๋ฅผ forEach๋ฌธ์ ์ฌ์ฉํด ๋ฐ๋ณตํ๋ค.
๋ฌธ์์ด์ ํด๋นํ๋ key๊ฐ์ด ์์ ๊ฒฝ์ฐ ์๋ก ๋ง๋ค์ด์ฃผ๊ณ value๋ก 1์ ์ง์ ํ๋ค.
์ด๋ฏธ ๋ฌธ์์ด์ ํด๋นํ๋ key๊ฐ์ด ์์ ๊ฒฝ์ฐ value์ 1์ ๋ํด์ค๋ค.
result๋ฅผ return ํ๋ค.
์ฃผ์ด์ง ๋ฌธ์์ด์์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ผ. ๋ง์ฝ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๊ทธ ์ค ์๋ฌด๊ฑฐ๋ ๋ฐํํ๋ผ.
function mostFrequentChar(s) {
let str = "";
for (let i = 0; i < s.length; i++) {
if (!str.includes(s[i])) str += s[i];
else return s[i];
}
}
๋ฐ๋ณต๋๋ ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์๋๋ก ๋น ๋ฌธ์์ด ๋ณ์ str์ ์ ์ธํ๋ค.
s๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ ๋ฌธ์์ฉ ๋ฐ๋ณตํ๋ค.
๋ง์ฝ str ๋ด์ i๋ฒ์งธ ๋ฌธ์๊ฐ ์๋ค๋ฉด str์ ๋ฃ์ด์ค๋ค.
str ๋ด์ i๋ฒ์งธ ๋ฌธ์๊ฐ ์๋ค๋ฉด ํด๋น ๋ฌธ์๊ฐ 2๊ฐ ์ด์์ด๊ธฐ ๋๋ฌธ์ i๋ฒ์งธ ๋ฌธ์๋ฅผ ๋ฐ๋ก return ํด์ค๋ค.
๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ๋ ๋ฌธ์์ด์ ๋ชจ๋ ๋ฑ์ฅํ๋ ๋ฌธ์๋ฅผ ์งํฉ์ผ๋ก ๋ฐํํ๋ผ.
function commonCharacters(s1, s2) {
const arr = [];
for (let i = 0; i < s1.length; i++) {
if (s2.includes(s1[i])) {
arr.push(s1[i]);
}
}
return new Set(arr);
}
๊ต์งํฉ ๋ฌธ์๋ฅผ ๋ฃ์ ๋น ๋ฐฐ์ด arr์ ์ ์ธํ๋ค.
s1์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋๋ ค i๋ฒ์งธ ์์๊ฐ s2์ ์์ ๊ฒฝ์ฐ ๊ต์งํฉ ๋ฌธ์์ด๋ฏ๋ก arr์ pushํ๋ค.
arr์ ๊ฒน์น๋ ๋ฌธ์๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ํด๋น ๋ฌธ์๋ค์ ์ ๊ฑฐํด์ฃผ๋ new Set ๋ฉ์๋๋ฅผ ์ฌ์ฉํด return ํ๋ค.
๋ ๋จ์ด A์ B๊ฐ ์ฃผ์ด์ก์ ๋, A์ ์ํ๋ฒณ ์์๋ฅผ ๋ฐ๊พธ์ด B๋ฅผ ๋ง๋ค ์ ์๋์ง ํ์ธํ๋ผ. ๊ฐ๋ฅํ๋ค๋ฉด true, ์๋๋ผ๋ฉด false๋ฅผ ๋ฐํํ๋ผ.
function isAnagram(a, b) {
const sortA = a.split("").sort();
const sortB = b.split("").sort();
for (let i = 0; i < sortA.length; i++) {
if (sortA[i] !== sortB[i]) {
return false;
}
}
return true;
}
๋ ๋จ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ฝ๋๋ก ์๋ก์ด ๋ณ์์ ๊ฐ ๋จ์ด๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ค์ด sort() ๋ฉ์๋๋ฅผ ์ ์ฉํ๋ค.
์ด ๊ฒฝ์ฐ ํ ๋จ์ด๊ฐ ์ํ๋ฒณ ์์๋ฅผ ๋ฐ๊พธ์ด ๋ค๋ฅธ ๋จ์ด๋ฅผ ๋ง๋ค ์ ์๋ค๋ฉด ๋ฐฐ์ด์ ์์์ ์์๊ฐ ์ ๋ถ ๊ฐ๋ค๋ ์ ์ ์ด์ฉํ๋ค.
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด sort()๊ฐ ์ ์ฉ๋ ๋ฐฐ์ด์ ๊ฐ ์์๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ ๋ฐ๋ก false๋ฅผ returnํ๋ค.
false ์์ด ๋ฐ๋ณต๋ฌธ์ ์ ๋ถ ๋์๋ค๋ฉด ๋ ๋ฐฐ์ด์ ์์๊ฐ ๊ฐ๋ค๋ ๋ง์ด๊ธฐ ๋๋ฌธ์ true๋ฅผ returnํ๋ค.
์ค๋์ ํ์์ดํ์ด ์์๋ค. ๊ธฐ์กด ํฌ๋ ๋ฆฌ์คํธ๋ง ํ์์ดํ์ด ์๋ ์ค ์์๋๋ฐ, ๋ํ๊ธฐ/๋นผ๊ธฐ ๊ณ์ฐ๊ธฐ ํ์์ดํ๋ ์ถ๊ฐ๋์ด, ๊ณ์ฐ๊ธฐ์ 20๋ถ, ํฌ๋ ๋ฆฌ์คํธ์ 40๋ถ์ผ๋ก ์ด 1์๊ฐ์ด ์ฃผ์ด์ง๋ ํ์์ดํ์ด์๋ค.
ํฌ๋ ๋ฆฌ์คํธ๊ฐ์ ๊ฒฝ์ฐ ๋ณ ์ด๋ ค์ ์์ด ์ฐ์ตํ๋๋ก ์ ํด๋๊ณ , ์๊ณ ๋์ง ์์ ๊ฑฑ์ ํ๋ ๊ณ์ฐ๊ธฐ๋ ํฐ ์ด๋ ค์ ์์ด ํด๋๋ค. ์๋๋ ๊ณ์ฐ๊ธฐ ์ฝ๋์ด๋ค.
export default function App() {
const [value, setValue] = useState("");
const [count, setCount] = useState(0);
return (
<div>
<h1>๋ง์
๊ณผ ๋บ์
์ด ๊ฐ๋ฅํ ์ฑ ๋ง๋ค๊ธฐ</h1>
<div>
<input
type="number"
value={value}
onChange={(e) => {
setValue(e.target.value);
}}
/>{" "}
๋งํผ์{" "}
<button
onClick={() => {
setCount(count + +value);
}}
>
๋ํ ๊ฒ์
</button>{" "}
<button
onClick={() => {
setCount(count - +value);
}}
>
๋บ๊ฒ์
</button>
<button
onClick={() => {
setCount(0);
}}
>
์ด๊ธฐํ
</button>
</div>
<hr />
<div>
<h3>๊ฒฐ๊ณผ</h3>
<p>{count}</p>
</div>
</div>
);
}