์๋ ํ์ธ์! ์ค๋์ ๋ฐฑ์ค์ 14501๋ฒ ๋ฌธ์ ์ธ “ํด์ฌ” ๋ฌธ์ ๋ฅผ ํจ๊ป ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋์์ด๊ฐ ํด์ฌํ๊ธฐ ์ ๊น์ง ์ต๋ํ ๋ง์ ์์ต์ ์ป๊ธฐ ์ํด ์๋ด ์ผ์ ์ ์กฐ์ ํ๋ ๋ฌธ์ ์ ๋๋ค. ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋๋ก ํ์ฃ !
1. ๋ฌธ์ ์ค๋ช
1) ๋์์ด๋ ํด์ฌ๋ฅผ ํ๊ณ ๋ ํ, N์ผ ๋์ ์๋ด์ ํ๋ฉฐ ์์ต์ ์ป์ผ๋ ค ํฉ๋๋ค.
2) ๊ฐ ์๋ด์ ์๋ด์ ์๋ฃํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ๊ธฐ๊ฐ๊ณผ ์๋ด์ ํตํด ์ป์ ์ ์๋ ์์ต์ด ์ฃผ์ด์ง๋๋ค.
3) ๋์์ด๋ ํด์ฌํ๊ธฐ ์ ๊น์ง ์ต๋ํ ๋ง์ ์์ต์ ์ป๊ณ ์ ํฉ๋๋ค.
4) ๋์์ด๊ฐ ํด์ฌํ๋ ๋ ๊น์ง ์ป์ ์ ์๋ ์ต๋ ์์ต์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋ฌธ์ URL: https://www.acmicpc.net/problem/14501
2. ์ ๊ทผ๋ฒ
1) ์ ๋ ฅ๋ฐ๊ธฐ: ์๋ด ๊ธฐ๊ฐ๊ณผ ์์ต ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
2) ์ฌ๊ท ํจ์ ์ ์: ๋ชจ๋ ์๋ด ์ผ์ ์ ๊ณ ๋ คํ์ฌ ์ต๋ ์์ต์ ์ฌ๊ท์ ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
3) ๊ฒฐ๊ณผ ์ถ๋ ฅ: ๊ฐ๋ฅํ ์ต๋ ์์ต์ ์ถ๋ ฅํฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# ์
๋ ฅ๋ฐ๋ ๋ถ๋ถ
# ์ ์ฒด ์๋ด ๊ธฐ๊ฐ (N์ผ)
N = int(input())
# ๊ฐ ์ผ์๋ณ ์๋ด ๊ธฐ๊ฐ๊ณผ ์์ต
sd = [list(map(int, input().split())) for _ in range(N)]
ans = -1 # ์ต๋ ์์ต์ ์ ์ฅํ ๋ณ์, ์ด๊ธฐ๊ฐ์ -1๋ก ์ค์
# ์ฌ๊ทํจ์ ์ ์
def rec(day, price):
global ans # ์ ์ญ๋ณ์ ans๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ธ
if day < N: # ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ๋ณด๋ค ์์ ๋
ans = max(price, ans) # ํ์ฌ ์์ต๊ณผ ๊ธฐ์กด ์ต๋ ์์ต์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ans์ ์ ์ฅ
elif day == N: # ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ๊ณผ ๊ฐ์ ๋
ans = max(price, ans) # ํ์ฌ ์์ต๊ณผ ๊ธฐ์กด ์ต๋ ์์ต์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ans์ ์ ์ฅ
return # ํจ์ ์ข
๋ฃ
elif day > N: # ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ์ ์ด๊ณผํ ๋
return # ํจ์ ์ข
๋ฃ
# ํ์ฌ ์๋ด์ ์ ํํ๋ ๊ฒฝ์ฐ
rec(day + sd[day][0], price + sd[day][1]) # ์๋ด์ ์งํํ ํ ๋ ์ง์ ์์ต์ ๊ฐฑ์ ํ์ฌ ์ฌ๊ท ํธ์ถ
# ํ์ฌ ์๋ด์ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ
rec(day + 1, price) # ๋ค์ ๋ ๋ก ๋์ด๊ฐ์ ์ฌ๊ท ํธ์ถ
rec(0, 0) # ์ฌ๊ทํจ์ ์ต์ด ํธ์ถ, ์ฒซ๋ ๋ถํฐ ์์ํ๋ฉฐ ์ด๊ธฐ ์์ต์ 0
print(ans) # ์ต๋ ์์ต ์ถ๋ ฅ
4. ์ฝ๋ ์ค๋ช
1) ์ ๋ ฅ๋ฐ๋ ๋ถ๋ถ
• N์ ์ ๋ ฅ๋ฐ์ ์ ์ฒด ์๋ด ๊ธฐ๊ฐ์ ์ค์ ํฉ๋๋ค.
• ๊ฐ ์ผ์๋ณ ์๋ด ๊ธฐ๊ฐ๊ณผ ์์ต์ ์ ๋ ฅ๋ฐ์ sd ๋ฆฌ์คํธ์ ์ ์ฅํฉ๋๋ค.
2) ์ ์ญ ๋ณ์ ์ด๊ธฐํ
• ans ๋ณ์๋ฅผ ์ด๊ธฐํํ์ฌ ์ต๋ ์์ต์ ์ ์ฅํ ์ค๋น๋ฅผ ํฉ๋๋ค.
3) ์ฌ๊ท ํจ์ ์ ์
• rec ํจ์๋ day์ price๋ฅผ ์ธ์๋ก ๋ฐ์ ํธ์ถ๋ฉ๋๋ค.
• ํจ์๋ ๋ค์ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ํฉ๋๋ค:
1. day < N: ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ๋ณด๋ค ์์ ๋, ํ์ฌ ์์ต๊ณผ ๊ธฐ์กด ์ต๋ ์์ต์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ans์ ์ ์ฅํฉ๋๋ค.
2. day == N: ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ๊ณผ ๊ฐ์ ๋, ํ์ฌ ์์ต๊ณผ ๊ธฐ์กด ์ต๋ ์์ต์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ans์ ์ ์ฅํ๊ณ ํจ์๋ฅผ ์ข ๋ฃํฉ๋๋ค.
3. day > N: ํ์ฌ ๋ ์ง๊ฐ ์ ์ฒด ๊ธฐ๊ฐ์ ์ด๊ณผํ ๋, ํจ์๋ฅผ ์ข ๋ฃํฉ๋๋ค.
• ์ฌ๊ท ํธ์ถ:
• ํ์ฌ ์๋ด์ ์ ํํ๋ ๊ฒฝ์ฐ, ์๋ด ๊ธฐ๊ฐ์ ๋ํ ๋ค์ ๋ day์ ์๋ด ์์ต์ ๋ํ price๋ก ์ฌ๊ท ํธ์ถํฉ๋๋ค.
• ํ์ฌ ์๋ด์ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ, ๋ค์ ๋ ๋ก ๋์ด๊ฐ์ ์ฌ๊ท ํธ์ถํฉ๋๋ค.
4) ์ฌ๊ท ํจ์ ์ด๊ธฐ ํธ์ถ
• rec(0, 0)์ผ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ฒ์ ํธ์ถํ์ฌ ์ฒซ๋ ๋ถํฐ ์์ํ๋ฉฐ ์ด๊ธฐ ์์ต์ 0์ผ๋ก ์ค์ ํฉ๋๋ค.
5) ๊ฒฐ๊ณผ ์ถ๋ ฅ
• print(ans)๋ฅผ ํตํด ์ต๋ ์์ต์ ์ถ๋ ฅํฉ๋๋ค.
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 11728[๋ฐฐ์ด ํฉ์น๊ธฐ] (0) | 2024.07.01 |
---|---|
BOJ(๋ฐฑ์ค) 1946[์ ์ ์ฌ์] (0) | 2024.06.28 |
BOJ(๋ฐฑ์ค) 19942[๋ค์ด์ดํธ] (0) | 2024.06.25 |
BOJ(๋ฐฑ์ค) 2961[๋์์ด๊ฐ ๋ง๋ ๋ง์๋ ์์] (0) | 2024.06.23 |
BOJ(๋ฐฑ์ค) 2343[๊ธฐํ ๋ ์จ] (0) | 2024.06.21 |