강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

형준님의 프로필 이미지
형준

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

2. 휴가(DFS)

왜 2, 5, 6, 7이 출력 되는지 모르겠습니다

작성

·

193

0

 

def DFS(v, sum):
global res
if v > a + 1:
return
elif v == a + 1:
if sum > res:
res = sum

else:
for i in range(v, a + 1):
if cnt[i] == 0:
cnt[i] = 1
DFS(v + b[i], sum + c[i])
cnt[i] = 0
DFS(v + 1, sum)
cnt[i] = 0

if __name__=="__main__":
a = int(input())
b = [0] * (a + 1)
c = [0] * (a + 1)
for i in range(1, a + 1):
d, e = map(int, input().split())
b[i] = d
c[i] = e
res = -2147000000
cnt = [0] * (a + 1)
DFS(1, 0)
print(res)

2, 5, 6, 7은 DFS(v + b[i], sum + c[i]) 이 부분 때문에 출력이 안될거라 생각했는데 나왔어요
어디서 잘못된 걸 까요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

재귀호출을 

DFS(i + b[i], sum + c[i])

해야 맞습니다.

형준님의 프로필 이미지
형준

작성한 질문수

질문하기