~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/2579
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- ์ต๋ 300๊ฐ ๊ณ๋จ์ ์ ์๋ฅผ ๊ธฐ๋กํ ๋ฐฐ์ด ๋ฏธ๋ฆฌ ์ ์ธ
- ๊ณ๋จ ๋ณ ์ ์ ๊ธฐ๋ก ๋ฐฐ์ด๊ณผ dp ๊ธฐ๋ก์ ์ ์ฅํ ๋ฐฐ์ด 2๊ฐ ํ์
- ๊ณ๋จ 1 : ๋ณธ์ธ ์ ์
๊ณ๋จ 2 : ๊ณ๋จ 1 + ๋ณธ์ธ ์ ์
๊ณ๋จ 3 : max(๊ณ๋จ 1 + ๋ณธ์ธ , ๊ณ๋จ 2 + ๋ณธ์ธ)
- ์ ํ์ : max( ๋ณธ์ธ ์ด์ ๊ณ๋จ ๋ฐ๊ณ ๋ณธ์ธ , ๋ณธ์ธ ์ด์ ๊ณ๋จ ๋ฐ์ง ์๊ณ ๋ณธ์ธ)
ai = max( dp[ai-3] + floor[ai-1] + floor[ai] , dp[ai-2] + floor[ai])
์์ฑ ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
floor = [0]*301
dp = [0]*301
for i in range(1, n+1):
floor[i] = int(input())
dp[1] = floor[1]
dp[2] = floor[1] + floor[2]
dp[3] = max(floor[1] + floor[3], floor[2] + floor[3])
for i in range(4, n+1):
dp[i] = max(dp[i-3] + floor[i-1] + floor[i], dp[i-2] + floor[i])
print(dp[n])
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
REFERENCE
https://pacific-ocean.tistory.com/149
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1654 ๋์ ์๋ฅด๊ธฐ | ์ด์ง ํ์ | ์๊ฐ ์ด๊ณผ (0) | 2023.07.08 |
---|---|
[Python] ๋ฐฑ์ค 9655 ๋ ๊ฒ์ | DP (0) | 2023.06.18 |
[Python] ๋ฐฑ์ค 1966 ํ๋ฆฐํฐ ํ (0) | 2023.06.11 |
[Python] ๋ฐฑ์ค 16953 A -> B | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ | BFS (0) | 2023.06.09 |
[Python] ๋ฐฑ์ค 1003 ํผ๋ณด๋์น ํจ์ | DP (0) | 2023.06.08 |