자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[완전탐색][상태 트리] - 바둑이 승차(DFS)

얄루몬 2022. 7. 25. 17:40

def DFS(L, sum, tsum):
    global result
    if sum+(total-tsum)<result:
        return
    if sum>c:
        return
    if L==n:
        if sum>result:
            result=sum
    else:
        DFS(L+1, sum+a[L], tsum+a[L])
        DFS(L+1, sum, tsum+a[L])


if __name__=="__main__":
    c, n=map(int, input().split())
    a=[int(input()) for _ in range(n)]
    result=-2147000000
    total=sum(a)
    DFS(0, 0, 0)
    print(result)
  • 종료 조건을 더 늘려서 속도를 개선했다.
  • 해당 res에 들어간 값보다 아래 가지를 더해도 값이 더 가까워지지 않을 땐 res를 사용하도록 하는 것이다.