CK week4 day3

BnDC·2021년 10월 13일
0

code Kata

목록 보기
18/22

🧨 문제

다음과 같이 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

📍 step1

받은 입력 strs의 원소 중 같은 문자열로 이루어진 문자열을 set로 만들어 담을 리스트를 만든다.

def groupAnagrams(strs):
#step1
    strs_sets = []



📍 step2

strsfor문으로 순회하면서,
set로 만들어 동일한 원소가 없을 때, strs_sets에 담는다.

즉, strs_sets에 담긴 원소들은 각각 중복되지 않은 원소들이다.

resultsstrs_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))]



📍 step3

def groupAnagrams(strs):
#... ...#

#... ...#

#step3
    for s in strs:
        target = strs_sets.index(set(s))
        results[target].append(s)
        
    return results

strsfor문으로 다시 순회하면서,
strs의 한 원소 sset 했을 때,
strs_sets의 한 원소와 같다면,

(result의 원소 중에) strs_sets의 인덱스와 동일한 인덱스를 가진 list에 담는다.

profile
“Life is C (Choice) between B (Birth) and D (Death).” - 인생은 B와 D사이의 C

0개의 댓글