#1 그룹 애너그램
Q. 문자열로 구성된 배열인 str이 주어집니다. 이 배열에 있는 문자들 중에 같은 이니셜로 구성된 친구들끼리 묶어주세요!
정답 코드
class Solution(object):
def groupAnagrams(self, strs):
anagram = {}
for word in strs:
currentWord = "".join(sorted(word))
if currentWord in anagram:
anagram[currentWord].append(word)
else:
anagram[currentWord] = [word]
return list(anagram.values())
strs = ["eat","tea","tan","ate","nat","bat"] # 예시배열
sol = Solution()
result = sol.groupAnagrams(strs)
print(result)
풀이 과정!
Solution이라는 class를 생성한 뒤, 안에 groupAnagrams 함수를 생성합니다.
groupAnagrams 함수가 반환할 값은 "같은 이니셜끼리 묶인 그룹 애너그램" 입니다.
# for문 입장
anagram 객체를 생성하고 strs 배열 안에 있는 단어를 같은 이니셜끼리 for문들 통해 구분할 겁니다.
먼저 sorted 매서드를 통해 같은 이니셜인 친구들끼리 묶어주겠습니다.
currentWord에 sorted를 통해 이니셜을 순서정돈 시킨 단어를 담습니다.
# if문 입장
만약 anagram 객체에 currentWord(순서정돈 된 이니셜)이 이미 있다면 해당 배열에 본래 단어인 word를 추가시킵니다.
anagram 객체에 해당 currentWord가 없다면 배열에 담은 word를 생성시킵니다.
# return
이후 저희에게 필요한 정보만 뽑아오기 위해 anagram 객체에서 value값만 배열화하고 반환합니다.
print를 통해 값을 나타내면 문제 해결입니다!
'Python > codingTest' 카테고리의 다른 글
[백준 #7562] 나이트의 이동 (0) | 2024.01.17 |
---|---|
[leetCode #704] Binary Search (0) | 2024.01.13 |
[Python CT#5] 최대 힙 (1) | 2024.01.08 |
[Python CT#4] 배열요소로 큰 수 만들기 (0) | 2024.01.06 |
[Python CT#3] K번째 큰 요소 (0) | 2024.01.06 |