๐ค๋ฌธ์ ํด๊ฒฐ
Lv4 | dp
2 x n ํ์ผ๋ง ๋ฌธ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก dp ๋ฌธ์ .
- ์์ ํ์์ผ๋ก ์ด๋ฐ ๋ช ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ค.(์์ด๋ ์ฝ๋๋ก...)
- ๋ช ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง๊ณ ์ ํ์์ ์ธ์ด๋ค.
๋๋ 1๋ฒ ๋ถ๋ถ์ ํ๋ค๊ฐ ์๊ฐ ๋๋ฌด ์ปค์ ธ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด๊น๋ด... ๋ค๋ฅธ๋ฐ์ ๊ฐ์ ธ์๋ค
๋๊ฐ์ ์ฌ๋์ ์ํด
์ด์ ์์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง๊ณ ์์ ์ธ์ฐ๋ฉด ๋๋ค. ๊ท์น์ฑ์ ๋ฌด์กฐ๊ฑด ์๋ค
๐จ
๐ป์์ค ์ฝ๋
def solution(n):
answer = 0
dp = [0] * (n + 1)
dp[0] = 1 # ์๋ฌด๊ฒ๋ ๋์ง ์๋ ๊ฒฝ์ฐ๋ 1๊ฐ์ง
sub = 0
for i in range(2, n + 1, 2):
dp[i] = dp[i - 2] * 3 + sub * 2
sub += dp[i - 2]
answer = dp[n] % 1000000007
return answer
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋งํฌ: https://programmers.co.kr/learn/courses/30/lessons/12902
๋ฌธ์ ์ค๋ช
๊ฐ๋ก ๊ธธ์ด๊ฐ 2์ด๊ณ ์ธ๋ก์ ๊ธธ์ด๊ฐ 1์ธ ์ง์ฌ๊ฐํ ๋ชจ์์ ํ์ผ์ด ์์ต๋๋ค. ์ด ์ง์ฌ๊ฐํ ํ์ผ์ ์ด์ฉํ์ฌ ์ธ๋ก์ ๊ธธ์ด๊ฐ 3์ด๊ณ ๊ฐ๋ก์ ๊ธธ์ด๊ฐ n์ธ ๋ฐ๋ฅ์ ๊ฐ๋ ์ฑ์ฐ๋ ค๊ณ ํฉ๋๋ค. ํ์ผ์ ์ฑ์ธ ๋๋ ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค
- ํ์ผ์ ๊ฐ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
- ํ์ผ์ ์ธ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
์๋ฅผ๋ค์ด์ n์ด 8์ธ ์ง์ฌ๊ฐํ์ ๋ค์๊ณผ ๊ฐ์ด ์ฑ์ธ ์ ์์ต๋๋ค.
์ง์ฌ๊ฐํ์ ๊ฐ๋ก์ ๊ธธ์ด n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ๋ก์ ๊ธธ์ด n์ 5,000์ดํ์ ์์ฐ์ ์ ๋๋ค.
- ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์ ์ง ์ ์์ผ๋ฏ๋ก, ๊ฒฝ์ฐ์ ์๋ฅผ 1,000,000,007์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ returnํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
nresult
4 | 11 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ค์๊ณผ ๊ฐ์ด 11๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 16953. A โ B (0) | 2020.09.18 |
---|---|
[python] SWEA - 1248. ๊ณตํต์กฐ์ (0) | 2020.09.17 |
[python] ๋ฐฑ์ค - 9658. ๋ ๊ฒ์4 (0) | 2020.09.16 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์งํ ํธ์ง (2) | 2020.09.16 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ซ์ ๋ธ๋ก (1) | 2020.09.15 |