[LeetCode][Python3]#49.Group Anagrams

Carvin·2020년 7월 24일
0

49. Group Anagrams

문제

Given an array of strings, group anagrams together

예시

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

풀이

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        words = list(map(lambda x : ''.join(sorted(x)), strs))
        
        res = []
        for word in set(words):
            ls = []
            for i in range(len(words)):
                if word == words[i]:
                    ls.append(strs[i])
            res.append(ls)
            
        return res

먼저 anagrams는 '철자 순서를 바꾼 말'을 의미한다. 즉, 철자 순서에 상관없이 같은 문자를 가지고 있는 단어를 색출하는 문제라고 이해했다.

words는 같은 단어를 묶기 위한 기준으로 정렬 방식을 적용해 만든 리스트이며
나머지 단어와 기준이 일치할 때, ls 리스트에 넣어주는 방식으로 진행했다.

확실히 for문을 2번이나 사용해서 그런지 runtime이 굉장히 오래 걸리는 것으로 나왔다.

결과

101 / 101 test cases passed.
Status: Accepted
Runtime: 5548 ms
Memory Usage: 17 MB

0개의 댓글