배고픈 개발자 이야기

[Python] GroupAnagrams 본문

알고리즘 문제/LEETCODE

[Python] GroupAnagrams

이융희 2021. 6. 30. 00:51
728x90

Medium 난이도 Acceptence 60.6% 문제

 

입력으로 주어진 단어 리스트 중에 철자를 바꿨을 때 동일한 문자를 리스트로 묶어서

반환하는 문제이다.

 

주어진 입렵값의 범위가 크기 때문에 효율적으로 풀어야 좋을것으로 보이나직관적으로 풀이해보았다.

 

-풀이-단어의 철자를 각각 아스키코드로 변환한 후, 정렬 및 중복 제거를 한다.중복제거한 단어열별로 각각 리스트별로 묶는다 (원본 인덱스 사용)

 

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        if len(strs) <= 1:
            return [strs]
        
        answer, ordStrs, uniStrs = [], [], []
        for word in strs:
            temp = []
            for x in word:
                temp.append(ord(x))
            temp.sort()
            ordStrs.append(temp)
            if temp not in uniStrs:
                uniStrs.append(temp)

        for unique in uniStrs:
            temp = []
            for i, word in enumerate(ordStrs):
                if word == unique:
                    temp.append(strs[i])
            answer.append(temp)
            
        return answer

'알고리즘 문제 > LEETCODE' 카테고리의 다른 글

[Python] Remove Nth Node from End of List  (0) 2021.05.06
[Python] Letter Combination of a Phone Number  (0) 2021.05.06
[Python] Binary Tree Inorder Traversal  (0) 2021.05.06
[Python] Add Two Numbers  (0) 2021.05.06
[Python] 3Sum  (0) 2021.05.06
Comments