โ๋ฌธ์
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWT-lPB6dHUDFAVT
๋ฉ๋ชจ๋ฆฌ: 57,264 KB, ์๊ฐ: 590 ms, ์ฝ๋๊ธธ์ด: 441 Bytes
โ๐ปํ์ด
์ ํด์ง ์นผ๋ก๋ฆฌ๋ฅผ ๋๊ธฐ์ง ์์ผ๋ฉด์ ๊ฐ์ฅ ์ ์๊ฐ ๋์ ํ๋ฒ๊ฑฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ ํด์ง ์นผ๋ก๋ฆฌ๊ฐ 1000์ผ ๋, ์ฃผ์ด์ง ์ฌ๋ฃ๋ค๋ก 1000์ ๋๊ธฐ์ง ์์ผ๋ฉด์ ๊ฐ์ฅ ์ ์๊ฐ ๋์ ํ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
์ฃผ์ด์ง ์ฌ๋ฃ๋ค์ ์ ์์ ์นผ๋ก๋ฆฌ๊ฐ ๊ฐ๊ฐ (100, 200), (300, 500), (250, 300), (500, 1000), (400, 400)์ด๋ผ๊ณ ํ๋ค๋ฉด
์ด๋ ๊ฐ์ฅ ๋์ ์ ์๋ 750์ด ๋๋ฉฐ ์นผ๋ก๋ฆฌ๋ 900์ผ๋ก ์ ํด์ง ์นผ๋ก๋ฆฌ๋ฅผ ๋๊ธฐ์ง ์๋๋ค.
์ฒซ๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ดํด๋ณธ๋ค. ํน์ ๋๋ฒ์งธ ์ฌ๋ฃ๋ถํฐ ์ ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค. ์ฆ, ํ์ฌ ์ ์์์ ์ง๊ธ ์์น์ ์ฌ๋ฃ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ค์ ์์น์ ์ฌ๋ฃ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค.
๐ป์ฝ๋
t = int(input())
def dfs(s, c, d):
global ms
if c > l:
return
ms = max(ms, s)
if d == n:
return
dfs(s + scores[d], c + calories[d], d+1)
dfs(s, c, d+1)
for i in range(1, t + 1):
n, l = map(int, input().split())
scores = [0] * n
calories = [0] * n
for j in range(n):
scores[j], calories[j] = map(int, input().split())
ms = 0
dfs(0, 0, 0)
print(f"#{i} {ms}")
๐ํ๊ธฐ
์ฒ์์๋ napsack๋ฌธ์ ์ฒ๋ผ dp์ธ ์ค ์๊ณ ์๋ํ๋๋ฐ ์๋ฌด๋ฆฌ ์๊ฐํด๋ dp๋ก ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ฐ์ด ์ ์กํ๋ค. ์ ์๋ ๋น์ทํ ์ ํ์ ๋ฌธ์ ๋ ์ฒ์์๋ dp์ธ๊ฐ ํ๋๋ฐ ๊ทธ ๋ฌธ์ ๋ ๊ฒฐ๊ตญ dfs ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ์ ํ์ด๋ํ์ด๋ ๊ฐ์ด ์ ์กํ๋ ๊ฒ ๊ฐ์ง..
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] 1289.์์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๋ณต๊ตฌํ๊ธฐ/Python - D3 (2) | 2024.11.14 |
---|---|
[SWEA] 1225.์ํธ์์ฑ๊ธฐ/Python - D3 (1) | 2024.11.13 |
[SWEA] 2805.๋์๋ฌผ ์ํํ๊ธฐ/Python - D3 (0) | 2024.11.11 |
[Baekjoon] 2565.์ ๊น์ค/Python - Gold5 (0) | 2024.11.05 |
[Baekjoon] 13305.์ฃผ์ ์/Python - Silver3 (0) | 2024.11.01 |