재귀의 return
주어진 arr 안에서 2개를 선택하는 문제다.
def combination(m, arr):
# DFS
chosen = []
index = []
def dfs(arr, nxt):
if len(chosen) == 2:
return chosen
for i in range(nxt, len(arr)):
chosen.append(arr[i])
index.append(i+1)
dfs(arr, i+1)
chosen.pop()
index.pop()
result = dfs(arr, 0)
print(result)
return result
combination(4, [1, 4, 5, 3, 2])
최종값을 return하기 위해 result = dfs(arr, 0)
과 같이 값을 return하면 None
이 나온다. 그래서 result라는 list을 따로 만들어 매번 저장하면 된다.
def combination(m, arr):
result = []
chosen = []
index = []
def dfs(arr, nxt):
if len(chosen) == 2:
result.append([chosen[0], chosen[1]])
return
for i in range(nxt, len(arr)):
chosen.append(arr[i])
index.append(i+1)
dfs(arr, i+1)
chosen.pop()
index.pop()
dfs(arr, 0)
print(result)
return result
combination(4, [1, 4, 5, 3, 2])
#[[1, 4],
# [1, 5],
# [1, 3],
# [1, 2],
# [4, 5],
# [4, 3],
# [4, 2],
# [5, 3],
# [5, 2],
# [3, 2]]