Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

JustDoEat

[Python/String-Manipulation] Group Anagrams 본문

카테고리 없음

[Python/String-Manipulation] Group Anagrams

kingmusung 2023. 11. 22. 23:31

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'라는 문자열을 생성합니다.