# 5시 20분 시작 - 5시 35분 끝
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
candidate = []
result = []
def backtrack(start,candidate):
if len(candidate) == k:
#print(candidate)
result.append(candidate[:])
return
for i in range(start,n+1):
candidate.append(i)
backtrack(i+1,candidate)
candidate.pop()
return result
return backtrack(1,candidate)
# 5시 20분 시작 -
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def backtrack():
result = []
candidate = []
if len(candidate) == k:
result.append(candidate)
return
for i in range(1,n+1):
candidate.append(i)
backtrack()
candidate.pop()
return result
return backtrack()
재귀함수가 실행될때 마다 candidate = [] 로 인해 계속해서 후보군 리스트가 초기화되어서 무한루프를 돌게됨. 업데이트 되는 후보군리스트나 결과리스트는 반드시 재귀함수 바깥으로 빼주어 전역변수로 만들어주는 것이 중요하다.
result.append(candidate)