๐ฅธ ๋ฌธ์
16987๋ฒ: ๊ณ๋์ผ๋ก ๊ณ๋์น๊ธฐ
์๋ ํ๋ก๊ทธ๋๋จธ์ ๊ธฐ๋ณธ ์์์ ํ๊ตฝํํด๊ธฐ๋ฅผ ๋จ ํ ๊ฐ๋ ํ ์ ์๋ ๊ฒ์ด๋ผ๊ณ ํ์ง๋ง ์ธ๋ฒ์ด๋ 3๋ 500์ ๋๊ธฐ๋ ๋ช ์๋๋ ํ๋ก๊ทธ๋๋จธ ์ค ํ ๋ช ์ด๋ค. ์ธ๋ฒ์ด๋ BOJ์์ ํ๋ฆฐ ์ ์ถ์ ํ ๋๋ง๋ค ํฑ
www.acmicpc.net
๐คฉ ํด์ค ๋ฐ ํ์ด
s = []
w = []
mx_cnt = 0
curr_cnt = 0
def solution(a):
global mx_cnt, curr_cnt
if a == n:
mx_cnt = max(mx_cnt, curr_cnt)
return
if s[a] <= 0 or curr_cnt == n - 1:
solution(a + 1)
return
for t in range(n):
if t == a or s[t] <= 0:
continue
s[a] -= w[t]
s[t] -= w[a]
if s[a] <= 0:
curr_cnt += 1
if s[t] <= 0:
curr_cnt += 1
solution(a + 1)
if s[a] <= 0:
curr_cnt -= 1
if s[t] <= 0:
curr_cnt -= 1
s[a] += w[t]
s[t] += w[a]
n = int(input())
for i in range(n):
s_curr, w_curr = map(int, input().split())
s.append(s_curr)
w.append(w_curr)
solution(0)
print(mx_cnt)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ทธ๋ฆฌ๋] ๐ก BOJ - 2839๋ฒ, 1931๋ฒ, 1202๋ฒ, 1715๋ฒ, 11000๋ฒ, 1744๋ฒ, 1339๋ฒ, 1700๋ฒ, 2812๋ฒ, 3109๋ฒ, 2437๋ฒ, 10775๋ฒ (0) | 2023.08.19 |
---|---|
[BOJ] 15683๋ฒ ๊ฐ์ - Python (0) | 2023.07.20 |
[์๊ณ ๋ฆฌ์ฆ] ๋ฐฑํธ๋ํน (Backtracking) (0) | 2023.07.14 |
[์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ท (Recursion) (0) | 2023.07.14 |
[BOJ] 1697๋ฒ ์จ๋ฐ๊ผญ์ง - Python (0) | 2023.07.14 |