์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๋ฌธ์ œํ’€์ด (Python)

[LeetCode] 49. group-anagrams (Medium) 2023/4/28

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 4. 28. 14:25
728x90
๋ฌธ์ œ ์ œ๋ชฉ ์ •๋‹ต๋ฅ  ๋‚œ์ด๋„
49. group-anagrams 66.8% Medium
 

Group Anagrams - LeetCode

Can you solve this real interview question? Group Anagrams - Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase

leetcode.com

 

๋ฌธ์ œ์š”์•ฝ

๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์• ๋„ˆ๊ทธ๋žจ ๊ธฐ์ค€์œผ๋กœ ๋ฌถ์–ด๋ผ

์กฐ๊ฑด 1) ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค

์กฐ๊ฑด 2) ์• ๋„ˆ๊ทธ๋žจ์€ ๋‹จ์–ด๋‚˜ ์–ด๊ตฌ์ธ๋ฐ, ๋‹ค๋ฅธ ๋‹จ์–ด๋‚˜ ์–ด๊ตฌ์˜ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ํ™œ์šฉํ•ด์„œ ์žฌ๋ฐฐ์—ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

Step1. ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ by defaultdict

defaultdict ์ž๋ฃŒํ˜•์€ ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋Œ€์‹  ๊ธฐ๋ณธ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ ๋”•์…”๋„ˆ๋ฆฌ ๋Œ€์‹  ์ž์ฃผ ์‚ฌ์šฉ

 

defaultdict ์‚ฌ์šฉ : object ์ž๋ฃŒํ˜•์œผ๋กœ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ์ง€์ •
๊ฐ’์ด ์—†์„๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ๊ฐ’์„ ์ถœ๋ ฅ
collections.defaultdict(object)

 

 

Step2. ๋”•์…”๋„ˆ๋ฆฌ key ๊ฐ’์œผ๋กœ ์ •๋ ฌ๋œ ํ˜•ํƒœ์˜ ๋‹จ์–ด๋‚˜ ์–ด๊ตฌ๊ฐ€ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•จ -> ์ •๋ ฌ ํ•จ์ˆ˜ ์ด์šฉ

 

๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ(๋ฐ˜ํ™˜ X) list.sort(key=None, reverse=False)
์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ(๋ฐ˜ํ™˜ O) list.sorted(key=None, reverse=False)

 

 

๊ตฌํ˜„

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        #Step1. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
        group_anagrams=collections.defaultdict(list)
        
        #Step2. word๋ฅผ ์ •๋ ฌํ•ด key๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ถ”๊ฐ€
        for word in strs:
            group_anagrams[''.join(sorted(word))].append(word)
        
        return group_anagrams.values()
728x90