diff --git "a/H0ngJu/DFS/\352\263\204\353\236\200\354\234\274\353\241\234 \352\263\204\353\236\200\354\271\230\352\270\260.py" "b/H0ngJu/DFS/\352\263\204\353\236\200\354\234\274\353\241\234 \352\263\204\353\236\200\354\271\230\352\270\260.py" new file mode 100644 index 00000000..5c64ab75 --- /dev/null +++ "b/H0ngJu/DFS/\352\263\204\353\236\200\354\234\274\353\241\234 \352\263\204\353\236\200\354\271\230\352\270\260.py" @@ -0,0 +1,39 @@ +import sys +sys.setrecursionlimit(10**6) + +def input(): return sys.stdin.readline().rstrip() + +N = int(input()) +eggs = [list(map(int, input().split())) for _ in range(N)] + +def break_egg(idx): + cnt = 0 + + # idx가 넘어간 경우 + if idx == N: + for i in range(N): + if eggs[i][0] <= 0: + cnt += 1 + return cnt + + if eggs[idx][0] <= 0: # 들고 있는 계란이 깨진 경우 + return break_egg(idx+1) + + broken = False + for j in range(N): # 계란 깨기 + if j != idx and eggs[j][0] > 0: + broken = True + eggs[idx][0] -= eggs[j][1] + eggs[j][0] -= eggs[idx][1] + + cnt = max(cnt, break_egg(idx+1)) + + eggs[idx][0] += eggs[j][1] + eggs[j][0] += eggs[idx][1] + + if not broken: + return break_egg(idx+1) + + return cnt + +print(break_egg(0)) diff --git a/H0ngJu/README.md b/H0ngJu/README.md index c222cf56..b0ad9a67 100644 --- a/H0ngJu/README.md +++ b/H0ngJu/README.md @@ -19,5 +19,6 @@ | 15차시 | 2024.05.14 | 그리디 | [A와 B](https://www.acmicpc.net/problem/12904) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/188 | | 16차시 | 2024.05.14 | BFS | [뱀과 사다리 게임](https://www.acmicpc.net/problem/16928) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/191 | | 17차시 | 2024.05.22 | BFS | [적록색약](https://www.acmicpc.net/problem/10026) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/195 | +| 17차시 | 2024.05.26 | DFS | [계란으로 계란치기](https://www.acmicpc.net/problem/16987) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/199 | ---