2 x n์ด๋ ๋น์ทํ ์ค ์์๋๋ฐ ์์์ ์ด์ํ๋ ์ด๋ ค์์ด ์๋ค.
์ง์ง ์ง๊ธ๊น์ง ํผ ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2 ๋ฌธ์ ์ค์์ ์ญ๋๊ธ ๋์ด๋ ๊ฐ๋ค.
๋ฌธ์ ์ค๋ช
๊ฐ๋ก ๊ธธ์ด๊ฐ 2์ด๊ณ ์ธ๋ก์ ๊ธธ์ด๊ฐ 1์ธ ์ง์ฌ๊ฐํ ๋ชจ์์ ํ์ผ์ด ์์ต๋๋ค. ์ด ์ง์ฌ๊ฐํ ํ์ผ์ ์ด์ฉํ์ฌ ์ธ๋ก์ ๊ธธ์ด๊ฐ 3์ด๊ณ ๊ฐ๋ก์ ๊ธธ์ด๊ฐ n์ธ ๋ฐ๋ฅ์ ๊ฐ๋ ์ฑ์ฐ๋ ค๊ณ ํฉ๋๋ค. ํ์ผ์ ์ฑ์ธ ๋๋ ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค
- ํ์ผ์ ๊ฐ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
- ํ์ผ์ ์ธ๋ก๋ก ๋ฐฐ์น ํ๋ ๊ฒฝ์ฐ
์๋ฅผ๋ค์ด์ n์ด 8์ธ ์ง์ฌ๊ฐํ์ ๋ค์๊ณผ ๊ฐ์ด ์ฑ์ธ ์ ์์ต๋๋ค.
์ง์ฌ๊ฐํ์ ๊ฐ๋ก์ ๊ธธ์ด n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ๋ก์ ๊ธธ์ด n์ 5,000์ดํ์ ์์ฐ์ ์ ๋๋ค.
- ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์ ์ง ์ ์์ผ๋ฏ๋ก, ๊ฒฝ์ฐ์ ์๋ฅผ 1,000,000,007์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ returnํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
n | result |
4 | 11 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ค์๊ณผ ๊ฐ์ด 11๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
๋์ ํ์ด
- ์ฒ์์๋ 2 x n ํ์ผ๋ง ๋น์ทํ๊ฒ ๋ ์ค ์์๋๋ฐ, ์์ด ์ผ์ด์ค๊ฐ ๋๋ฌด ๋ง์๋ค.
- ๊ทธ๋์ ํํธ๋ฅผ ์ด์ง ๋ณผ ์ ๋ฐ์ ์์๋ค. ์ ํ์์ ๊ณต๋ถํด์ผ๋จ.
์ ํ์์ด๋?
- ์์ด์์ ์ด์ํ๋ ๋ํญ์ ๊ด๊ณ
- ์์ด = {an} = 1, 3, 5, 7, 9, 11, ...
- 1ํญ = a1 = 1
- n+1ํญ = an+1 = an + 2 {n=1,2,3,...}
- ๊ธฐ๋ณธ ์ ํ์ (๋จ, f(n)์ ์์, n์ฐจํจ์, ์ง์ํจ์์ด๋ฉฐ c๋ ์์์
๋๋ค)
- an+1 = an + f(n)
- an+1 = f(n) * an
- an+1 = c * an + f(n)
- ๋ณํ์ ํ์
- an + α = bn
- an+1 - an = bn
- 1/an = bn
์์ด ๋ง๋ค๊ธฐ
- ์ ํ์์ ๋ง๋ค๋ ค๋ฉด ๋จผ์ ์์ด์ ๋ง๋ค์ด์ผ ํ๋ค.
- ์ผ๋จ n์ด ํ์๋ฉด ๊ฐ๋ ์ฑ์ธ ์ ์์ผ๋ฏ๋ก 0์ ๋ฆฌํด.
- ํ์์์. ํ ์คํธ ์ ๋ถ ์ง์์.
- ๊ทธ๋ฆฌ๊ณ ๋์ด๊ฐ 3์ด๋ผ ํ๋ ๊ฐ๋ก๋ก ๋ํ์ผ ํด์ a,b,c 3์ข ๋ฅ๋ก ์์ด์ ๋ง๋ค์ด์ผ ํจ.
- ๊ธ๊ณ aa, bb์ธ ๊ฒฝ์ฐ ๊ฐ์ด๋ฐ๋ฅผ ๋ํ๋ ๋ฐฉ์์ผ๋ก 1๊ฐ์ฉ ์ถ๊ฐํ ์ ์์.
- aaa์ผ ๊ฒฝ์ฐ 2๊ฐ ์ถ๊ฐ, aaaa์ธ ๊ฒฝ์ฐ 3๊ฐ ์ถ๊ฐ, ...
- ๊ทธ๋ผ ์ด๋ ๊ฒ ๋๋?
- ๋๋ฌด ๋ง์๋ฐ? ์์ผ๋ก ํ๋ ๊ฑด ํฌ๊ธฐ.
- ํผ๋ณด๋์น๋ ์๋๊ณ ๋ญ์ผ...?
n : result | ์์ด | ์ถ๊ฐ |
2 : 3 = 3**1 |
a, b, c | |
4 : 11 = 9 + 2 = 3**2 + 1x2 |
aa, ba, ca ab, bb, cb ac, bc, cc |
(1) x 2 : aa, bb |
6 : 41 = 27 + 8 + 4 = 3**3 + 1x8 + 2x2 |
aaa, baa, caa aab, bab, cab aac, bac, cac aba, bba, cba abb, bbb, cbb abc, bbc, cbc aca, bca, cca acb, bcb, ccb acc, bcc, ccc |
(2) x 2 : aaa, bbb (1) x 2 x 4 : baa, aab, aac, caa abb, bba, bbc, cbb |
8 : 153 = 81 + 72 = 3**4 + 1x12 + 2x16 + 3x6 |
aaaa, baaa, caaa aaab, baab, caab aaac aaba aabb aabc aaca aacb aacc abaa abab abac abba abbb, bbbb, cbbb abbc, ... ... accc, bccc, cccc |
(3) x 2 x 3 : aaaa, bbbb (2) x 8 x 2 : baaa, aaab, aaac, caaa abbb, bbba, bbbc, cbbb (1) x 12 aaba, aabb, aabc, aaca, aacb, aacc bbab, bbaa, bbac, bbca, bbcb, bbcc baab, caac abba. cbbc ๊ฐ๋ง๋ค... |
10 : 571 = 243 + 328 = | aaaaa, bbbbb, ccccc | (4) x 2 (3) x 2 x 3 x 2 (2) x 8 x 2 x 3 (1) x 12 x .... |
12 : 2131 = 729 + 1402 = | aaaaaa, bbbbbb, cccccc | |
14 : 7953 = 2187 + 5766 = | aaaaaaa, bbbbbbb, ccccccc |
- n//2ํฌ๊ธฐ๋ก a,b,c ์์ด ๋ง๋ค๊ณ , a,b,c ์์ 2๊ฐ์ด์ ๋ถ์ ์ ๋ค์ ๋ฝ์์, ์์๊ฐ ์ค๋ณต์ผ๋ก ๋ถ์ ๊ฐฏ์ ์ต๋๊ฐ์ 1 ๋นผ์ฃผ๊ณ ํฉํ ๋ฆฌ์ผ ๊ณ์ฐํ๋ฉด ๊ทธ ๊ฐ์ธ๋ฐ... ์์์ ๋ง๋ ์กฐํฉ์ a,b,c ๋ถ์ฌ์ ์กฐํฉ์ด ์ด๋ป๊ฒ ๋ง๋ค์ด์ง๋์ง๊ฐ ๊ท์น.
- ์ด๊ฑธ ์ฐพ๋ ์ฝ๋๋ฅผ ์ง๋ ค๋ค๊ฐ, ์ฌ๊ธฐ์ฏค์์ ํํธ๋ฅผ ๋ณด์. ๋จธ๋ฆฌ๊ฐ ํ๊ณ๋ค.
- ๋ผ๊ณ ๋ดค๋๋ ์ ํ์ ๋๋ฌด ์ฌ์ด... ใ
ก.ใ
ก;
- ๊ธธ์ด๊ฐ n์ธ ํ์ผ๋ง์ ์ด ๊ฐ์ง์๋ฅผ A(n) ์ด๋ผ๊ณ ํ์
- A(n)=3A(n-2)+2(A(n-4)+A(n-6)+A(n-8) . . .) ์ผ๋ก ๋์์๋ค.
- T: O(N2) , S: O(N)
- ์ ์ฝ๋๋ฅผ ๊ทธ๋ฅ ์ฝ๋๋ก์ฎ๊ธฐ๋ฉด ์ ๋ต์ ๋๋ค.
- ์ด๊ฑธ ๋ณด๊ณ ๋ค์ ์๋ฅผ ๋ณด๋... ๋ด๊ฐ ์๋ชป ์๊ฐํ๊พธ๋... ์์๊ฑธ ์ ๋ถ ๋ํด์ 2๋ก ๊ณฑํด์ฃผ๋ ๊ฑฐ์๋ค๋...
- A(0) = 1
- A(2) = 3A(0) = 3
- A(4) = 3A(2) + 2(A(0)) = 3x3 + 2x1 = 11
- A(6) = 3A(4) + 2(A(2)+A(0)) = 3x11 + 2x(3+1) = 33 + 8 = 41
- A(8) = 3A(6) + 2(A(4)+A(2)+A(0)) = 3x41 + 2x(11+3+1) = 123 + 30 = 153
- ๊ฐ์ฌํฉ๋๋ค. ์ด์๋ฌ์... ์ผ๋จ ๋ง๋ ํ์ธ!
# ์ค๋ฅ 'RecursionError: maximum recursion depth exceeded'
import sys
sys.setrecursionlimit(10**5)
def solution(an):
def f(n):
if n < 0:
return 0
elif n == 0:
return 1
elif n == 2:
return 3
return 3*f(n-2) + 2*sum(f(n-i) for i in range(4, n+1, 2))
return f(an)
- ์๊ฒ์ ์๊ฐ์ด ํ๋ฅด๊ณ ใ ใ ใ
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 2 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 3 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 4 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 5 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 6 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 7 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 8 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 9 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 10 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 11 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 12 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 13 ใ
ํ
์คํธ 14 ใ
- ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐฉ์์ผ๋ก ์์ ํด๋ณด์์ผ๋... ์คํจ.
- ๋ญ์ผ ์๋๋ค ใ ก.ใ ก;
import sys
sys.setrecursionlimit(10**5)
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
memo[4] = 11
def f(n):
if n in memo:
return memo[n]
memo[n] = 3*f(n-2) + 2*sum(f(n-i) for i in range(4, n+1, 2))
return memo[n]
return f(an)
- ๋ฐํ์ ์๋ฌ๋จ.
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 2 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 3 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 4 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 5 ใ ์คํจ (2.54ms, 10.4MB)
ํ
์คํธ 6 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 7 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 8 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 9 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 10 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 11 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 12 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 13 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 14 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 2 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 3 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 4 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 5 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
ํ
์คํธ 6 ใ ์คํจ (๋ฐํ์ ์๋ฌ)
- ์ฌ๊ทํธ์ถ ์ ์ฐ๊ณ for๋ฌธ ๋๋ ค์ ์์๋๋ก ๊ณ์ฐํด์ผ ๋๋๋ณด๋ค....
- ์ด ๋๋ ๋ฐํ์ ์๋ฌ๋จ.
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
memo[4] = 11
for n in range(6, an+1, 2):
memo[n] = 3*memo[n-2] + 2*sum(memo[n-i] for i in range(4, n+1, 2))
return memo[an]
- ์... ๋ฐ๋ณด๋ค. ใ ใ ใ
- ๋ฆฌํธํ ๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ๋ฌธ์ ๋ ํญ์ ์ฌ๊ธฐ์ ์๊ฐ์ ์๋นํ๋ค.
- ๋ด๋ถํด ๋ฏธ๋ฆฌ ๋ฆฌํด ๊ฐ ์์ % 1000000007 ์จ๋์ผ์ง.
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
for n in range(4, an+1, 2):
memo[n] = 3*memo[n-2] + 2*sum(memo[n-i] for i in range(4, n+1, 2))
return memo[an] % 1000000007
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (129.62ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (190.78ms, 10.6MB)
ํ
์คํธ 3 ใ ํต๊ณผ (422.12ms, 10.8MB)
ํ
์คํธ 4 ใ ํต๊ณผ (503.37ms, 10.8MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.68ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (73.85ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (169.04ms, 10.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (366.74ms, 10.6MB)
ํ
์คํธ 9 ใ ํต๊ณผ (215.19ms, 10.5MB)
ํ
์คํธ 10 ใ ํต๊ณผ (68.36ms, 10.4MB)
ํ
์คํธ 11 ใ ํต๊ณผ (146.26ms, 10.6MB)
ํ
์คํธ 12 ใ ํต๊ณผ (35.41ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (75.83ms, 10.3MB)
ํ
์คํธ 14 ใ ํต๊ณผ (73.72ms, 10.4MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (415.51ms, 10.7MB)
ํ
์คํธ 2 ใ ํต๊ณผ (418.13ms, 10.5MB)
ํ
์คํธ 3 ใ ํต๊ณผ (406.05ms, 10.8MB)
ํ
์คํธ 4 ใ ํต๊ณผ (414.27ms, 10.8MB)
ํ
์คํธ 5 ใ ํต๊ณผ (561.70ms, 10.7MB)
ํ
์คํธ 6 ใ ํต๊ณผ (388.69ms, 10.7MB)
- ๊ทธ๋ผ ์ฌ๊ทํธ์ถ๋ ๋๋ ๊ฑฐ์๊ณ ... ๋ ์๋๊ณ (์๊ฐ์ด๊ณผ)
- ์ฌ๊ทํธ์ถ ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐฉ์๋ง ๋๋ ๊ฑฐ์๋ค.
import sys
sys.setrecursionlimit(10**5)
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
memo[4] = 11
def f(n):
if n in memo:
return memo[n]
memo[n] = 3*f(n-2) + 2*sum(f(n-i) for i in range(4, n+1, 2))
return memo[n]
return f(an) % 1000000007
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (220.05ms, 11.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (334.00ms, 12MB)
ํ
์คํธ 3 ใ ํต๊ณผ (626.87ms, 12.3MB)
ํ
์คํธ 4 ใ ํต๊ณผ (727.99ms, 12.6MB)
ํ
์คํธ 5 ใ ํต๊ณผ (1.40ms, 10.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (152.36ms, 11.1MB)
ํ
์คํธ 7 ใ ํต๊ณผ (368.14ms, 11.8MB)
ํ
์คํธ 8 ใ ํต๊ณผ (639.78ms, 12.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (360.61ms, 12MB)
ํ
์คํธ 10 ใ ํต๊ณผ (131.92ms, 10.9MB)
ํ
์คํธ 11 ใ ํต๊ณผ (337.41ms, 11.7MB)
ํ
์คํธ 12 ใ ํต๊ณผ (126.12ms, 10.9MB)
ํ
์คํธ 13 ใ ํต๊ณผ (198.22ms, 11.1MB)
ํ
์คํธ 14 ใ ํต๊ณผ (156.27ms, 11.2MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (661.99ms, 12.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (676.00ms, 12.7MB)
ํ
์คํธ 3 ใ ํต๊ณผ (633.50ms, 12.6MB)
ํ
์คํธ 4 ใ ํต๊ณผ (647.55ms, 12.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (861.99ms, 12.9MB)
ํ
์คํธ 6 ใ ํต๊ณผ (637.42ms, 12.2MB)
- ๊ฒฐ๋ก ์ ๋ญ๋ค?
- ์ฌ๊ทํธ์ถ + ๋ฉ๋ชจ์ด์ ์ด์
- for๋ฌธ + ๋ฉ๋ชจ์ด์ ์ด์
๋ค๋ฅธ ๋ถ๋ค์ ํ์ด
- ๋น์ทํ ๋ฐฉ์์ธ๋ฐ, ๋ฆฌ์คํธ๋ก ํ๋ฉด ์ ๊ทผ ์๋๊ฐ ๋๋ ค์ ธ์ ์ข ๋ ๋๋ฆฌ๊ฒ ๋์ค๋ ๊ฒ ๊ฐ๋ค.
def solution(n):
answer = 0
dp=[0]*(n+5)
dp[0]=1
dp[2]=3
dp[3]=0
for i in range(4,n+1):
dp[i]=(3*dp[i-2]+2*sum([dp[i-j] for j in range(4,n+1,2) if i-j>=0]))%(10**9+7)
return dp[n]
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (323.38ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (433.67ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (720.11ms, 10.3MB)
ํ
์คํธ 4 ใ ํต๊ณผ (728.25ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (2.14ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (168.99ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (418.55ms, 10.1MB)
ํ
์คํธ 8 ใ ํต๊ณผ (696.55ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (403.68ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (134.42ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (300.67ms, 10.3MB)
ํ
์คํธ 12 ใ ํต๊ณผ (112.97ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (179.96ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (159.80ms, 10.3MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (617.27ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (664.34ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (713.28ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (673.38ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (847.21ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (641.23ms, 10.4MB)
- ๋ฆฌ์คํธ๋ฅผ ์ฐ๋ ค๋ฉด ์ด๋ ๊ฒ ์จ์ผ ๋นจ๋ผ์ง๋ค.
- dp.append()ํ ๋ %1000000007๋ก ๋๋ ์ค๋ค. ์ซ์๊ฐ ์์์ง๋ฉด ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
- ๊ทธ๋ฆฌ๊ณ for๋ฌธ์ด ์๋๋ผ sum(dp[0:1])๋ก ๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฅ.
def solution(n):
dp = [1,0,3]
for i in range(0, n-2):
if i % 2 == 0:
dp.append(0)
else:
dp.append((3 * dp[i + 1] + 2 * sum(dp[0:i]))% 1000000007)
answer = dp[n]
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (12.89ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (20.51ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (56.07ms, 10.1MB)
ํ
์คํธ 4 ใ ํต๊ณผ (64.88ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.17ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (11.60ms, 10MB)
ํ
์คํธ 7 ใ ํต๊ณผ (29.75ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (37.16ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (28.25ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (12.35ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (16.18ms, 10.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (7.70ms, 10.1MB)
ํ
์คํธ 13 ใ ํต๊ณผ (8.19ms, 10.3MB)
ํ
์คํธ 14 ใ ํต๊ณผ (8.21ms, 10.2MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (29.99ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (36.64ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (34.63ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (32.84ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (42.98ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (32.03ms, 10.2MB)
- ์ฌ๊ทํธ์ถํ๋ ๊ฑฐ ๊ฐ๋ง ๋๋จธ์ง๋ก ์ ์ฅํด๋ณด๋๊น ๋ ๋นจ๋ผ์ง๋ค.
import sys
sys.setrecursionlimit(10**5)
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
memo[4] = 11
def f(n):
if n in memo:
return memo[n]
memo[n] = (3*f(n-2) + 2*sum(f(n-i) for i in range(4, n+1, 2))) % 1000000007
return memo[n]
return f(an)
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (148.17ms, 11.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (229.07ms, 11.9MB)
ํ
์คํธ 3 ใ ํต๊ณผ (412.43ms, 12.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (437.16ms, 12.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (1.25ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (112.06ms, 11.2MB)
ํ
์คํธ 7 ใ ํต๊ณผ (205.96ms, 11.7MB)
ํ
์คํธ 8 ใ ํต๊ณผ (361.39ms, 12.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (244.50ms, 11.8MB)
ํ
์คํธ 10 ใ ํต๊ณผ (78.78ms, 10.8MB)
ํ
์คํธ 11 ใ ํต๊ณผ (170.68ms, 11.5MB)
ํ
์คํธ 12 ใ ํต๊ณผ (50.16ms, 10.8MB)
ํ
์คํธ 13 ใ ํต๊ณผ (102.50ms, 11.1MB)
ํ
์คํธ 14 ใ ํต๊ณผ (99.90ms, 11.3MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (431.02ms, 12.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (464.28ms, 12.4MB)
ํ
์คํธ 3 ใ ํต๊ณผ (455.27ms, 12.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (393.72ms, 12.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (540.58ms, 12.6MB)
ํ
์คํธ 6 ใ ํต๊ณผ (410.08ms, 12.4MB)
- for๋ฌธ ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐฉ์๋ ๋๋จธ์ง๋ฅผ ์ ์ฅํ๋๊น ๋ ๋นจ๋ผ์ง๋ค.
def solution(an):
memo = {}
memo[0] = 1
memo[2] = 3
for n in range(4, an+1, 2):
memo[n] = (3*memo[n-2] + 2*sum(memo[n-i] for i in range(4, n+1, 2))) % 1000000007
return memo[an]
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (66.58ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (106.73ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (191.57ms, 10.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (203.87ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.54ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (45.13ms, 10.1MB)
ํ
์คํธ 7 ใ ํต๊ณผ (94.73ms, 10.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (169.50ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (109.42ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (35.07ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (77.40ms, 10.5MB)
ํ
์คํธ 12 ใ ํต๊ณผ (22.45ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (46.06ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (46.64ms, 10.2MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (204.12ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (217.50ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (211.68ms, 10.5MB)
ํ
์คํธ 4 ใ ํต๊ณผ (183.46ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (227.46ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (190.39ms, 10.3MB)
- ์ด๊ณ ์. ์ด๊ฒ ๋ญ์ง? ๋๋ฐ์ธ๋ฐ...
def solution(n):
if n % 2:
return 0
front = back = 1
for _ in range(n//2):
front, back = back, (4*back - front) % 1000000007
return back
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.15ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.23ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.24ms, 10MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.27ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.20ms, 10.1MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.26ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.47ms, 10MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.39ms, 10MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.14ms, 9.96MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.26ms, 10.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.10ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.12ms, 10.1MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.24ms, 10MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.26ms, 10MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.27ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.57ms, 10.1MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.29ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.31ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.28ms, 10.1MB)
- ์ด๊ฒ๋ ์ ํ์์ด ์๋๋ผ ๊ท์น ์ฐพ์์ ํ์๋ค
def solution(n):
pa, pb, pc, a, b, c = 1, 0, 0, 0, 0, 2
for _ in range(1, n):
pa, pb, pc, a, b, c = a, b, c, (c + pa) % 1000000007, c, (b + a * 2) % 1000000007
return a
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.46ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.57ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.79ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.84ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.38ms, 10MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.57ms, 10.1MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.72ms, 10.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.85ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.34ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.51ms, 10.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.27ms, 10.1MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.76ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.38ms, 10.2MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (1.19ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (1.06ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.81ms, 10.1MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.71ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (1.15ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (1.07ms, 10.3MB)
- ์๋ฌดํผ ์ด๊ฑธ ๊ณ๊ธฐ๋ก ์ ํ์ ์ฐพ๋ ๊ฑฐ ๊ณต๋ถ ์ข ํด์ผํ ๊ฒ ๊ฐ๊ณ ,
- ์ ํ์์ ๋ ๊ฐ๋จํ๊ฒ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํด๋ด์ผํ ๊ฒ ๊ฐ๊ณ ,
- ์ด๋ฐ ์์ด ๋ฌธ์ ๋ ๊ท์น์ ์ฐพ์์ ์ฝ๋๋ฅผ ๋ ๋จ์ํ ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ ๊ฒ ๊ฐ๋ค.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฐ๋จน๊ธฐ (0) | 2023.02.17 |
---|---|
ํผ๋ณด๋์น ์์ด์ ์ผ๋ฐํญ (0) | 2023.02.17 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ฏธ๋ก ํ์ถ (1) | 2023.02.16 |
ํ๋ก๊ทธ๋๋จธ์ค ์นด๋ ๋ญ์น (0) | 2023.02.16 |
ํ๋ก๊ทธ๋๋จธ์ค 2 x n ํ์ผ๋ง (0) | 2023.02.16 |