매일 매일 성장하는 섭섭군

[LeetCode Top Interview Questions] Group Anagrams 본문

알고리즘 문제풀이/LeetCode

[LeetCode Top Interview Questions] Group Anagrams

섭섭군 2020. 8. 28. 15:15
반응형

leetcode.com/explore/interview/card/top-interview-questions-medium/103/array-and-strings/778/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

 

문제요약

이번 문제는 단어들을 같은 알파벳을 사용한 것 끼리 묶는 것 입니다. 

예시를 보면 알 수 있듯이 'a', 'e', 't' 를 사용한 "ate", "eat", "tea"가 묶여있습니다. 

결과값으로 묶은 단어를 Return 하면 됩니다.  

 

문제풀이 IDEA

어떤 알파벳을 사용했는지 아는것이 핵심입니다. 

  • 문자열을 하나씩 쪼개어 사전순으로 재배치 합니다.
  • 재배치한 문자열 딕셔너리의 Key로 사용하고 원래 문자열은 Value 배열안에 추가합니다.
  • Value 값들을 list로 묶어서 반환합니다. 

 

Code 

질문과 피듭백은 언제나 감사드립니다.  

from typing import List
class Solution:
    def getAnagrams(self, word) :
        tmep = list(word) 
        tmep = sorted(tmep)
        result = "".join(tmep) 
        return result

    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagramsDict = dict()
        for i in strs :
            ana = self.getAnagrams(i)
            if ana in anagramsDict :
                anagramsDict[ana].append(i)
            else :
                anagramsDict[ana] = [i]
        
        answer = list(anagramsDict.values())
        return answer

        
반응형
Comments