JustDoEat
[Python/String-Manipulation] Group Anagrams 본문
Anagrams란?
문자를 어떻게 배열해도 서로 같은 단어들을 말 한다.
예를들면, ate,eat 과 같은 관계이다.
문제.
주어진 문자열 배열 strs에서 애너그램을 그룹화하라. 답은 아무 순서로나 반환해도 된다. 애너그램이란 다른 단어나 문구의 문자를 재배열하여 일반적으로 모든 원래 문자를 정확히 한 번 사용하여 형성된 단어나 문구를 의미한다.
코드
def anagrams(strs)->list:
anagramsdict={} #정렬되어진 단어를 키값으로 쓰는 사전생성
for word in strs: # 리스트 안에 단어를 하나씩 전부 가지고옴.
sorted_word = ''.join(sorted(word)) # 정렬을 하면 한글자 한글자 리스트로 반환이 되어서 join사용
if sorted_word in anagramsdict: # 사전의 키값에 정렬된 단어가 있으면 append(word)를 써서 value값에 추가해줌
anagramsdict[sorted_word].append(word)
else:
anagramsdict[sorted_word]=[word]
return list(anagramsdict.values()) #키와 매치 되는 value값들을 리스트로 묶어서 리턴
# 그냥 반환하면 내가 원하는 결과값이 안나옴
strs = ["eat","tea","tan","ate","nat","bat"]
result = anagrams(strs)
print(result)
참고
join에대해
sorted(word): 문자열을 정렬한 리스트를 반환합니다. 예를 들어, "eat"를 정렬하면 ['a', 'e', 't']가 됩니다.
''.join(...): 정렬된 리스트를 다시 문자열로 합치는 작업을 수행합니다. join 메서드는 문자열을 사용하여 리스트의 각 요소를 연결합니다. 여기서는 빈 문자열 ''을 사용하여 각 문자를 이어붙입니다. 예를 들어, ['a', 'e', 't']가 입력으로 주어지면 'aet'라는 문자열을 생성합니다.