배고픈 개발자 이야기
[Python] GroupAnagrams 본문
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