첫 번째 줄에 계란의 개수를 입력
N+1번째 줄까지 각 계란의 내구도 / 무게를 입력
깰 수 있는 계란의 최대 개수
모든 경우의 수를 돌며 최대값을 구하는 문제이므로 dfs를 활용
계란을 입력받음 (eggs[idx][0]=>내구도 / eggs[idx][1]=>무게)
모든 경우의 수를 돌며 선택한 오른쪽 계란의 내구도가 0일 경우 다음 계란으로 넘어감
그렇지 않을 경우 내구도를 계산하고 다음 오른쪽 계란으로 넘어감
모든 계란의 내구도가 0일 경우 왼쪽 계란의 index 값을 N값으로 주어 stop
flag = False
for right in range(N):
if ans == N: return
if eggs[right][0] <= 0 or right == idx: continue
else:
eggs[idx][0] -= eggs[right][1]
eggs[right][0] -= eggs[idx][1]
flag = True
dfs(eggs, idx+1)
eggs[idx][0] += eggs[right][1]
eggs[right][0] += eggs[idx][1]
if not flag: dfs(eggs, N)
if idx == N:
broken = 0
for i in range(N):
if eggs[i][0] <= 0: broken += 1
ans = max(ans, broken)
return
elif eggs[idx][0] <= 0:
dfs(eggs, idx+1)
return