dfs

Nezy·2022년 7월 1일
0

전화번호 조합

def LetterCombinations(self, digits: str) -> List[str] :
	def dfs(index, path) : 
    	if len(path) == len(digits) :
        	result.append(path)
            return
     	
        for i in ranage(index, len(digits) :
        	for j in dic[digits[i]] : 
            	dfs(i+1, path+j) 
    if not digits : 
    	return []
   dic = {}
   dfs(0, "")
   return result

순열

def permute(self, nums: List[int]) -> List[List[int]] :
	results = []
    prev_elements = []
    
    def dfs(elements) : 
    	if len(elements) == 0 :
        	results.append(prev_elements[:])
       
        for e in elements :
        	next_elements = elements[:]
            next_elements.remove(e)
            
            prev_elements.append(e)
            dfs(next_elements)
            prev_elements.pop()
    dfs(nums)    
def permute ( self,  nums: List[int]) -> List[List[int]] ):
	return list(intertools.permutations(nums)) 

조합

def combine (self, n: int, k: int) -> List[List[int]] :
	results = []
    
    def dfs (elements, start: int, k: int): 
    	if k == 0 :
        	results.append(elements[:]) 
        for i in range(start, n+1) :
        	elements.append(i) 
            dfs(elements, i+1, k-1) 
            elements.pop()
    dfs ( [], 1, k) 
def combine (self, n: int, k: int) -> List[List[int]] : 
	return list(itertools.combinations(range(1, n+1), k)

조합의 합

def combinationSum (self, candidates: List[int]. target: int) -> List[List[int]] :
	result = []
    
    def dfs(csum, index, path) :
		if csum < = 0 :
        	return
        if csum == 0 :
        	result.append(path)
            return
        for i in range(index, len(candidates))
        	dfs(csum-candidates[i] , i, path+candidates[i])
    dfs(target, 0, [])
    return result

부분집합

def subsets(self, nums: List[int] -> List[List[int]]):
	result = []
    
    def dfs(index, path) :
    	result.append(path)
        
        for i in range(index, len(nums) :
        	dfs(i+1, path+[nums[i]])
            
    dfs(0, [])
    
profile
어?

0개의 댓글