|
| 1 | +// 1๋ฒ์งธ ์ ๊ทผ |
| 2 | +// ๊ธธ์ด๊ฐ ๊ฐ์ง ์๋ค๋ฉด ๋ฌด์กฐ๊ฑด ์์ธ์ด๋ฏ๋ก false. |
| 3 | +// ๋ ๋ฌธ์์ด์ ๋ค Map ์ผ๋ก ๋ง๋ ๋ค. |
| 4 | +// ํ๋์ Map ์ ๊ธ์์ ๋ค๋ฅธ ํ๋์ Map ์ ์๋ ๊ธ์๋ฅผ ๋น๊ตํ๋ฉฐ ์กด์ฌ ์ฌ๋ถ์ ์นด์ดํธ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. |
| 5 | + |
| 6 | +function isAnagram(s: string, t: string): boolean { |
| 7 | + if (s.length !== t.length) return false; |
| 8 | + |
| 9 | + const sMap = new Map(); |
| 10 | + for (const sChar of s) { |
| 11 | + sMap.set(sChar, (sMap.get(sChar) || 0) + 1); |
| 12 | + } |
| 13 | + const tMap = new Map(); |
| 14 | + for (const tChar of t) { |
| 15 | + tMap.set(tChar, (tMap.get(tChar) || 0) + 1); |
| 16 | + } |
| 17 | + |
| 18 | + for (const [char, count] of tMap) { |
| 19 | + if (!sMap.get(char)) return false; |
| 20 | + if (sMap.get(char) !== count) return false; |
| 21 | + } |
| 22 | + |
| 23 | + return true; |
| 24 | +} |
| 25 | + |
| 26 | +// 2๋ฒ์งธ ์ ๊ทผ |
| 27 | +// Map์ ํ ๊ฐ๋ง ๋ง๋ค๊ณ ๋ ๋น๊ต๊ฐ ๊ฐ๋ฅํ์ง ์์๊น? |
| 28 | +// 1. ํ๋์ ๋ฌธ์์ด์ ๋ํ Map ์ ๋ง๋ ๋ค. |
| 29 | +// 2. ๋๋จธ์ง ๋ฌธ์์ด์ ์ํํ๋ฉฐ ํด๋น ๋ฌธ์์ด ์นด์ดํธ๋ฅผ Map ์์ ์กฐํ |
| 30 | +// 3. ๋ง์ฝ ์นด์ดํธ๊ฐ 0์ด๋ผ๋ฉด false |
| 31 | +// 4. ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด Map ์ ์นด์ดํธ๋ฅผ -1. |
| 32 | +function isAnagram(s: string, t: string): boolean { |
| 33 | + if (s.length !== t.length) return false; |
| 34 | + |
| 35 | + const sMap = new Map(); |
| 36 | + for (const sChar of s) { |
| 37 | + sMap.set(sChar, (sMap.get(sChar) || 0) + 1); |
| 38 | + } |
| 39 | + for (const char of t) { |
| 40 | + const count = sMap.get(char) || 0; |
| 41 | + if (count === 0) return false; |
| 42 | + sMap.set(char, count - 1); |
| 43 | + } |
| 44 | + |
| 45 | + return true; |
| 46 | +} |
0 commit comments