다음과 같이 input이 주어졌을 때, 같은 알파벳으로 이루어진 단어끼리 묶은 리스트를 반환하는 함수를 만들어라. (output의 순서는 상관 없다.)
Input: ["eat", "tea", "tan", "ate", "nat", "bat"] Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
def groupAnagrams(strs):
#step1
strs_sets = []
#step2
for s in strs:
if set(s) not in strs_sets:
strs_sets.append(set(s))
results = [[] for i in range(len(strs_sets))]
#step3
for s in strs:
target = strs_sets.index(set(s))
results[target].append(s)
return results
받은 입력 strs
의 원소 중 같은 문자열로 이루어진 문자열을 set
로 만들어 담을 리스트를 만든다.
def groupAnagrams(strs):
#step1
strs_sets = []
strs
를 for
문으로 순회하면서,
set
로 만들어 동일한 원소가 없을 때, strs_sets
에 담는다.
즉, strs_sets
에 담긴 원소들은 각각 중복되지 않은 원소들이다.
results
를 strs_sets
의 원소 갯수 만큼의 리스트를 원소로 갖는 리스트를 만든다.
def groupAnagrams(strs):
#... ...#
#step2
for s in strs:
if set(s) not in strs_sets:
strs_sets.append(set(s))
results = [[] for i in range(len(strs_sets))]
def groupAnagrams(strs):
#... ...#
#... ...#
#step3
for s in strs:
target = strs_sets.index(set(s))
results[target].append(s)
return results
strs
를 for
문으로 다시 순회하면서,
strs
의 한 원소 s
를 set
했을 때,
strs_sets
의 한 원소와 같다면,
(result
의 원소 중에) strs_sets
의 인덱스와 동일한 인덱스를 가진 list
에 담는다.