๐Ÿ“– Group Anagrams

๐Ÿ“–What I thought

  1. ์ˆœ์„œ๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๋ฌธ์ž ๊ตฌ์„ฑ์ด ๊ฐ™์€ ๋‹จ์–ด๋“ค์„ ์ฐพ์•„์•ผ ํ•ด โ†’ ๊ฐ™๋‹ค๋Š” ๊ฑธ ์–ด๋–ป๊ฒŒ ์•Œ์ง€? โ†’ ๋‹จ์–ด๋ฅผ ์ •๋ ฌํ•ด๋ณด์ž
  2. ๊ทธ๋ฆฌ๊ณ  ์ด ๋‹จ์–ด๋“ค์„ ๋ฌถ์–ด์•ผ ํ•ด โ†’ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ๋‘๊ณ  ์ •๋ ฌ๋œ ๋‹จ์–ด๋ฅผ key, ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋‹จ์–ด๋ฅผ value์— ๋„ฃ์–ด์ฃผ์ž {sorted_word: \[word1, word2, ...]}

๐Ÿ“–ํ’€์ด

๐Ÿ“ŽSort & Dictionary

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
    hs = dict()
    
    for word in strs:
        key = "".join(sorted(word))
        
        if hs.get(key, 0):
            hs[key].append(word)
        else:
            hs[key] = [word]
    
    return list(hs.values())

๐Ÿ“–What I learned

  1. Dictionary์˜ key์—๋Š” immutable ๊ฐ์ฒด๋งŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ โ†’ list๋Š” ๋ถˆ๊ฐ€ (๊ทธ๋ž˜์„œ string์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Œ)
  2. sorted()๋ฅผ ์จ์„œ ์ •๋ ฌํ•˜๋ฉด list ํ˜•ํƒœ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ return (a.sort()๋Š” ๋ฐ˜ํ™˜๊ฐ’ ์—†์Œ)

๐Ÿ“–๊ด€๋ จ ์ง€์‹

๐Ÿ“ŽDictionary