인자로 문자열이 주어졌을 때, 같은 알파벳으로 이루어진 단어끼리 묶어주는 프로그램을 작성해주세요.
output에서 순서는 상관없습니다.
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
이번 풀이에서는 딕셔너리를 활용하여 풀었습니다.
#1
우선 문자열의 각 단어를 오름차순으로 정렬하여 튜플 형태로 만들어줍니다.
#2
딕셔너리의 key
값으로는 해당 튜플을 넣어줍니다.
#3
딕셔너리의 value
값으로는 튜플에 해당하는 단어를 배열의 원소로 넣어줍니다.
#4
생성된 딕셔너리에서 value
값만 뽑아 반환합니다.
코드를 통해 알아보겠습니다.
def groupAnagrams(strs):
arrnage_dict = {}
result = []
for i in range(len(strs)):
#1
result_k = tuple(sorted(strs[i]))
#2
if result_k not in arrnage_dict:
arrnage_dict[result_k] = [strs[i]]
else:
arrnage_dict[result_k] += [strs[i]]
#3
for value in arrnage_dict.values():
result.append(value)
#4
return result