Tags
- ์ํ
- Study
- greedy
- Dynamic Programming
- ์ ๋ ฌ
- CodingTest
- ์๋ฃ๊ตฌ์กฐ
- ์ ์๋ก
- ๋ฐฑํธ๋ํน
- LV2
- sort
- ๊ต์ฌ
- ๋๋น ์ฐ์ ํ์
- dfs
- DP
- ๋ฌธ์์ด
- queue
- stack
- ๊ทธ๋ํ ์ด๋ก
- SpringBoot
- BFS
- ๊ทธ๋ํ ํ์
- ๊ตฌํ
- Java
- ๊น์ด ์ฐ์ ํ์
- BOJ
- Brute Force Algorithm
- PGM
- ์๋ฎฌ๋ ์ด์
- Python
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2579 : ๊ณ๋จ ์ค๋ฅด๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ๊ท์น์ ๋ฐ๋ผ ๊ณ๋จ์ ์ค๋ฅด๋ฉฐ ๊ฐ์ ์ดํฉ์ด ์ต๋๊ฐ ๋๋๋ก ํ๋ค.
- ๊ท์น1. ๊ณ๋จ์ 1์นธ ํน์ 2์นธ(1์นธ ์ ํ) ์ฉ ์ค๋ฅผ ์ ์๋ค.
- ๊ท์น2. ์ฐ์๋ 3๊ฐ์ ๊ณ๋จ์ ์ฐ์์ผ๋ก ๋ฐ์ ์ ์๋ค.
- ๊ท์น3. ๋ง์ง๋ง ๊ณ๋จ์ ๋ฐ๋์ ๋ฐ์์ผ ํ๋ค.
- DP ๋ฌธ์ ์ด๊ณ ๋ง์ง๋ง์ ๊ผญ ๋ฐ์์ผํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๊พธ๋ก๊ฐ๋ ์ ํ์์ ๋ง๋ค์ด๋ณธ๋ค.
- ๋ง์ง๋ง ๊ณ๋จ์ ์ธ๋ฑ์ค๊ฐ n์ด๋ฉด, ๋ฐ์ ์ ์๋ ์ข
๋ฅ๋ 2๊ฐ์ง๋ค
- 1) n๊ณผ n-1์ ์ฐ์์ผ๋ก ๋ฐ๋๋ค = n-2๋ฅผ ๋ฐ์ผ๋ฉด์๋๋ค = n-3์ ๋ฐ๋๋ค.
- dp[n-3] + arr[n-1] + arr[n]
- 2) n-1์ ๋ฐ์ง ์๋๋ค.
- dp[n-2] + arr[n]
- ์ต๋๊ฐ์ ์ฐพ์์ผ ํ๋ฏ๋ก, ๋ ๋ฐฉ๋ฒ ์ค ํฐ ๊ฑธ ์ ํํ๋ค.
- 1) n๊ณผ n-1์ ์ฐ์์ผ๋ก ๋ฐ๋๋ค = n-2๋ฅผ ๋ฐ์ผ๋ฉด์๋๋ค = n-3์ ๋ฐ๋๋ค.
- ๋ง์ง๋ง ๊ณ๋จ์ ์ธ๋ฑ์ค๊ฐ n์ด๋ฉด, ๋ฐ์ ์ ์๋ ์ข
๋ฅ๋ 2๊ฐ์ง๋ค
- ์ธ๋ฑ์ค 0, 1, 2์ผ๋ ์ ํ์ 1๋ฒ์ด ์ ์ฉ์ด ์๋๋ฏ๋ก 0, 1, 2๋ ๋ฐ๋ก ์
๋ ฅํ๋ค.
- 1) ์ธ๋ฑ์ค 0 ์ ํ ๋ฐฉ๋ฒ 1๊ฐ
- 2) ์ธ๋ฑ์ค 1 ์ ํ ๋ฐฉ๋ฒ 2๊ฐ : max(arr[0] + arr[1], arr[1])
- 3) ์ธ๋ฑ์ค 2 ์ ํ ๋ฐฉ๋ฒ 2๊ฐ : max (arr[0] + arr[2], arr[1] + arr[2])
- n์ด 2์ดํ์ผ๋๋ ๋ฐ๋ก ์ฒ๋ฆฌํ๋ค.
๐ธ ์ฝ๋ ๐ธ
n = int(input())
arr = []
dp = [0] * n
for _ in range(n):
arr.append(int(input()))
dp[0] = arr[0]
if n == 1:
print(sum(arr))
exit(0)
dp[1] = max(arr[0]+arr[1], arr[1])
if n == 2:
print(sum(arr))
exit(0)
dp[2] = max(arr[0]+arr[2], arr[1]+arr[2])
for i in range(3, n):
dp[i] = max(dp[i-2]+arr[i], dp[i-3]+arr[i-1]+arr[i])
print(dp[n-1])
๐ธ ์ฝ๋ ํด์ ๐ธ
- arr : ๊ณ๋จ ๊ฐ์ ์ ์ฅํ๋ ๋ฆฌ์คํธ
- dp : ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฆฌ์คํธ (์ธ๋ฑ์ค๋ง๋ค ๋์ฐฉ ์ ์ต๋๊ฐ)
- n์ด 1, 2์ผ๋ ์์ธ์ฒ๋ฆฌ
- ์ธ๋ฑ์ค 0, 1, 2๋ dp๋ฅผ ๋ฐ๋ก ๊ณ์ฐ
- ๊ทธ ์ธ์๋ ์ ํธ์๋๋ก ๊ณ์ฐ
๐ธ end ๐ธ
- dp๋ฌธ์ ์ ๊ฐํผ๋ฅผ ๋ชป์ก๊ณ ์ ๋ต์ ๋ณด๊ฒ๋์๋ค. ๋ณดํต ์ ํ์์ ์ธ์ด๋ค๋ ๊ฑธ ๊ธฐ์ตํ์ง๋ง ์ดํดํ๋๋ฐ ์ค๋๊ฑธ๋ ธ๋ค.
- ํผ์ ๊ท์น์ ์๊ฐํ ๋๋ n์ ํฌ๊ธฐ๋ฅผ ๋๋ฌด ์๊ฒ ์ก์๊ฒ ํ ์ด์๋ค.
- ๊ธฐ๋ณธ ๊ท์น์ ๊ฐ๊ณ ์ ์ ์ถํ ์ ์๋๋ก ํด์ผ๊ฒ ๋ค.
- dp๋ฌธ์ ๋ ๋ ์ฐ์ตํด๋ด์ผ๊ฒ ๋ค.
728x90
'CodingTest > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_9461 : ํ๋๋ฐ ์์ด (0) | 2022.09.03 |
---|---|
BOJ_9095 : 1, 2, 3 ๋ํ๊ธฐ (0) | 2022.09.03 |
BOJ_9375 : ํจ์ ์ ์ ํด๋น (0) | 2022.09.01 |
BOJ_17219 : ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2022.08.30 |
BOJ_11399 : ATM (0) | 2022.08.30 |