Algorithm
그룹 애너그램
Hoonco
2023. 1. 15. 18:09
애너그램 이란?
일종의 언어유희로 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것을 말한다.
문제 .
문자열 배열을 받아 애너그램 단위로 그룹핑하라.
예제 1.
["eat", "tea", "tan", "ate", "nat", "bat"]
출력
[
["ate", "eat", "tea"], ["nat", "tan"], ["bat"]
]
코드
# 문자열을 받아 애너그램 단위로 그룹핑하라.
q = ["eat", "tea", "tan", "ate", "nat", "bat"]
def solution(strs):
dic = {}
for x in strs:
# ord로 유니코드 값 가져오기
sortedStr = ''.join(sorted(x))
# 딕셔너리에 sortedStr : [] 형태로 넣기
if sortedStr in dic:
value = dic[sortedStr]
value.append(x)
else:
dic[sortedStr] = [x]
# value 값에 대해서만 리스트로 반환
print(f"dic: {dic}") #dic: {'aet': ['eat', 'tea', 'ate'], 'ant': ['tan', 'nat'], 'abt': ['bat']}
return list(dic.values())
print(solution(q))
리스트를 돌면서 문자열을 전부 정렬한다.
애너그램의 기준이라면 문자열이 정렬된 값이 항상 똑같을 것이기 때문이다.
이를 딕셔너리의 키값으로 가져가고
정렬 전의 문자열을 넣어 준다.
실제로 딕셔너리에는
{'aet': ['eat', 'tea', 'ate'], 'ant': ['tan', 'nat'], 'abt': ['bat']}로 저장되게 된다.
이후 딕셔너리의 값들을 리스트화 시켜 반환시킨다.