Written on
·
124
0
안녕하세요 선생님. 강의 잘 듣고있습니다.
문제 6-4번 풀던 중에 궁금한점이 생겼는데요.
```
Answer 1
0
감사합니다^^
def DFS(n):
if n==5:
return True
else:
DFS(n+1)
if __name__=="__main__":
print(DFS(0))
위 코드는 DFS(5)만 True를 리턴받고 그 값이 DFS(0)까지 전달이 되지 않아 DFS(0)은 None값을 갖는 코드입니다.
def DFS(n):
if n==5:
return True
else:
return DFS(n+1)
if __name__=="__main__":
print(DFS(0))
위 코드는 DFS(5)가 True를 리턴받고, DFS(4)는 DFS(5)를 린턴받고 하면서 초종적으로 DFS(0)은 DFS(1)를 리턴받아 True를 리턴받게 됩니다.
이 문제처럼 함수 호출이 여러갈래로 이루어질 때는 함수가 값을 리턴받는게 아리라 변수를 사용해서 해결합니다. (exit() 없이 해결할 때)
def DFS(L):
global res
if res: return
if L == n:
Sum=0
for i in range(n):
if result[i]==1:
Sum+=a[i]
if Sum*2==sum(a):
res=True
else:
result[L]=1
DFS(L+1)
result[L]=0
DFS(L+1)
if __name__ == '__main__':
n = int(input())
a = list(map(int, input().split()))
result=[0]*n
res=False
DFS(0)
if res:
print("YES")
else:
print("NO")