Q. 같은 알파벳으로 이루어진 단어끼리 묶어주세요.
set
혹은 tuple
을 이용해서 단어를 알파벳단위로 분리 (후 정렬)for
문을 사용해 각 단어들이 중복인지 확인def groupAnagrams2(strs):
test = []
results = []
for str in strs:
if not set(str) in test:
test.append(set(str))
results.append([str])
else:
results[test.index(set(str))].append(str)
return results
def groupAnagrams(strs):
test2={}
for str in strs:
key = tuple(sorted(str))
test2[key] = test2.get(key,[]) + [str]
return list(test2.values())
syntax | get(keyname, value)
value : to return if key does not exist / 키값이 없을 때 value를 반환함
test2.get(key, [])
위의 코드는
딕셔너리 test2에서 key값이 key인 요소가 (1) 있으면 그 key값의 value를 반환 (2) 없으면 []를 반환
test2[key] = test2.get(key,[]) + [str]
딕셔너리 test2에 key값이 key인 요소의 value값에 str을 추가
value의 default는 무조건 빈 리스트 <- key값이 같은 str은 리스트에 추가됨