바위타는 두루미

10.2 Anagram 묶기 본문

Study/Interview준비

10.2 Anagram 묶기

DoRoMii 2019. 8. 6. 12:07
728x90

문제

Anagram 묶기: 철자 순서만 바꾼 문자열이 서로 인접하도록 문자열 배열을 정렬하는 메서드를 작성하라.

 

해결법

두 문자열이 철자 순서만 바꾼 문자열이라는 사실을 알아내려면 어떻게 할 수 있을까?

1. 정렬해서 같은 글자라면 Anagram일 것이다.

2. 나오는 철자들의 갯수를 세서 같은 갯수면 Anagram일 것이다.

 

첫번째 방식을 이용해서 해결이 가능할 것같다.

정렬한 값을 key로 문자열을 해쉬의 벨류로 가지는 해쉬를 관리함으로써 해결이 가능할 것이다.

def getAnagrams(words):
    
    sortChars = {}
    for w in words:
        key = ''.join(sorted(w))
        sortChars[key] = sortChars.get(key, []) + [w]
    result = []
    for value in sortChars.values() :
        result += value
    return result

 

'Study > Interview준비' 카테고리의 다른 글

10.4 크기를 모르는 정렬된 원소 탐색  (0) 2019.08.06
10.3 회전된 배열에서 검색  (0) 2019.08.06
8.14 불린 값 계산  (0) 2019.08.05
8.13 박스 쌓기  (0) 2019.08.05
8.12 여덟개의 퀸  (0) 2019.08.05
Comments