var isAnagram = function (s, t) {
let obj = {};
// ์์ธ์ฒ๋ฆฌ
if (s.length !== t.length) return false;
// s๋ฌธ์์ด ๋จผ์ ๋ฐ๋ณต
for (let item of s) {
// ๋ง์ฝ ์ด๋ฏธ ์๋ ์ํ๋ฒณ์ด ์๋ค๋ฉด ํด๋น ์ํ๋ฒณ์ key๋ก ๊ฐ์ง๋ value๋ฅผ 1์ฉ ๋ํด์ค๋๋ค.
if (obj[item]) obj[item]++;
// s์์ ์ํ๋ฒณ์ 1๋ก ์ด๊ธฐํ ์์ผ์ค๋๋ค.
else obj[item] = 1; // ์๊ฐ์ด ๊ฑธ๋ ธ๋ ๋ถ๋ถ
}
// t๋ฌธ์์ด ๋ฐ๋ณต
for (let item of t) {
// ํด๋น ์ํ๋ฒณ์ key๋ก ๊ฐ์ง๋ value๊ฐ ์๋ค๋ฉด 1์ฉ ๋นผ์ค๋๋ค.
if (obj[item]) obj[item]--;
}
// obj ๊ฐ์ฒด ์ ์ฒด์ values๋ฅผ ๋ด์ ๋ฐฐ์ด์ values ๋ณ์์ ๋ด์์ค๋๋ค.
// values ๋ฐฐ์ด์๋ ๊ฒฐ๊ณผ๊ฐ์ด true์ผ ๊ฒฝ์ฐ [0,0,0...] ์ฒ๋ผ ๋ชจ๋ ๋ฐฐ์ด์ ์์๊ฐ 0์ด์ด์ผ ํฉ๋๋ค.
const values = Object.values(obj);
for (let item of values) {
// ๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ 0์ด ์๋ value๊ฐ ์๋ค๋ฉด false๋ฅผ returnํฉ๋๋ค.
if (item !== 0) return false;
}
// ์ด์ธ์ ๊ฒฝ์ฐ true๋ฅผ returnํฉ๋๋ค.
return true;
};
์๊ฐ์ด ๊ฑธ๋ ธ๋ ๋ถ๋ถ์ด๋ค. else
๋ฅผ ์ฐ์ง ์๊ณ if
๋ง ์ด ์ํ์์ ์ ์๋๋์ง ํ์ฐธ ๊ณ ๋ฏผํ๊ณ ์์๋ค.
hash table์ ์ฌ์ฉํ์ฌ ํ์๋ค.
https://leetcode.com/problems/valid-anagram/
https://github.com/tTab1204/LeetCode/tree/main/%EC%A3%BC%EC%98%81