Python: 알고리즘 - 딕셔너리 자료형

wltjs10645·2020년 10월 1일
0

Python_알고리즘

목록 보기
9/13
post-thumbnail

Q. 다음과 같이 input이 주어졌을 때, 같은 알파벳으로 이루어진 단어끼리 묶어주세요. output에서 순서는 상관없습니다.

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

모델답안1

def groupAnagrams(strs):
    counter = {}
     
    for s in strs:
        # 정렬된 문자열을 key로 만들어줍니다.
        key = ''.join(sorted(s))
 
        if key not in counter:
            counter[key] = []
        # 그리고 문자열을 해당 key에 할당해줍니다.
        counter[key].append(s)
     
    result = []
    for key in counter:
        result.append(counter[key])
     
    return result
    

모델답안2

def groupAnagrams(strs):
    d = {}
    
    for w in sorted(strs):
        key = tuple(sorted(w))
        d[key] = d.get(key, []) + [w]
        print(d)
    return d.values()
    
print(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))
profile
BACKEND DEVELOPER☁️

0개의 댓글