242. Valid Anagram

๋Š˜๋ณดยท2021๋…„ 7์›” 17์ผ
0

LeetCode

๋ชฉ๋ก ๋ณด๊ธฐ
10/69

๐Ÿ’กํ’€์ด

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/

LeetCode GitHub

https://github.com/tTab1204/LeetCode/tree/main/%EC%A3%BC%EC%98%81

0๊ฐœ์˜ ๋Œ“๊ธ€