항해99 2주차 - 그룹애너그램
Today I learned
2022/01/17
회고록
1/17
항해 99, 알고리즘 1주차
교재 : 파이썬 알고리즘 인터뷰
6장 문자열 조작
1. 이론
문자열에 관한 이론
문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 예를 들어 다음과 같은 것들이 문자열이다.
"Life is too short, You need Python"
"a"
"123"
위 문자열 예문을 보면 모두 큰따옴표(" ")로 둘러싸여 있다. "123은 숫자인데 왜 문자열이지?"라는 의문이 드는 독자도 있을 것이다. 따옴표로 둘러싸여 있으면 모두 문자열이라고 보면 된다.
2. 문제
문자열 배열을 받아 애너그램 단위로 그룹핑하라
Example 1:Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""] Output: [[""]]
Example 3:
Input: strs = ["a"] Output: [["a"]]
cf) An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
https://leetcode.com/problems/group-anagrams/
3. MySol
import collections
def groupAnagrams(strs):
anagrams = collections.defaultdict(list) # 키값을 정해주는 배열이다.
print('defaultdict : ' + str(anagrams.default_factory))
for word in strs:
print("origin : " + word + ", sorted : " + str(sorted(word)))
print("''.join(sorted(word))'' : " + ''.join(sorted(word)))
# list 벗기기 위해 .join 이용
anagrams[''.join(sorted(word))].append(word)
return anagrams.values()
if __name__ == '__main__':
n = ["eat" , "tea" , "tan" , "ate" , "nat" , "bat"]
n = groupAnagrams(n)
print(n)
4. 배운 점
-
collections.defaultdict를 이용하여 키 : 밸류1,밸류2.. 으로 새로운 배열을 만들어 낼 수 있다.
-
''.join(["a","b","c"]) == 'abc'
-
sorted("eat") == ["a","e","t"] //문자열을 정렬시, char단위로 끊어진 배열로 나온다.
Author And Source
이 문제에 관하여(항해99 2주차 - 그룹애너그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsw4215/항해99-2주차-그룹애너그램저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)