보자마자 완전탐색 문제인것은 알았으나, 문제는...
DFS, BFS 공부를 열심히 하지 않아서 까먹고 또 까먹고...
그래서 이것도 구글링으로 답을 찾아보았다
# 보자마자 완전탐색 문제라는건 알았으나 dfs 다 까먹어서 다시 찾아봄
# 내가 푼게 아님
T = int(input())
for tc in range(1,T+1):
def dfs(index,sum):
global answer
# 가지치기라는데 굳이 안넣어도 패스됨...
# if answer<=sum:
# return
# 종료조건(if문을 저렇게 따로 쓴데는 이유가 있다)
if index==n:
if b<=sum<answer:
answer = sum
return
dfs(index+1,sum)
dfs(index+1,sum+arr[index])
n,b = map(int,input().split())
arr = list(map(int,input().split()))
answer = 200000
dfs(0,0)
print(f"#{tc} {answer-b}")
재귀법을 사용하였는데 저 부분이 이해가 안되서 아이패드에다 그림을 그리며 이해해보려 노력했다
하나하나 따져보니 종료조건도, 재귀함수도 모두 이해할 수 있었다.
그런데, 비슷한 문제가 나왔을때 또 풀 수 있을지...의문이다