import sys
input=sys.stdin.readline
visited = [0 for _ in range(9)]
arr =[0]*9
arr2=[] #찐 난쟁이
def dfs(cnt,idx):
if cnt== 7: #길이가 7
total=0
for i in range(7):
total+=arr2[i]
if total==100:
arr2.sort()
for i in range(7):
print(arr2[i])
return
for i in range(idx,9):
if visited[i]==0:
arr2.append(arr[i])
visited[i]=1 #방문
dfs(cnt+1,i+1)
visited[i]=0
del arr2[-1] #마지막부분지우기
for i in range(9):
arr[i]=int(input())
dfs(0,0)
백트래킹을 활용한 방법이라고 생각하면 된다.
dfs를 통해서 제일 깊은 곳까지 가는것을 if cnt == 7 이라는 것을 통해서 확인하여 만약 이것이 내가 구하는 값이라면 출력하고 아니라면 리턴하여 탈출하는 과정이다.
이렇게 쭉쭉 처음부터 끝까지 조합을 하는 과정이라고 보면 된다.