{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-2133-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"5081c769-02ff-5db5-b55d-1130c0862c6f","excerpt":"3xN의 크기를 갖는 배열에 2x1, 1x2 크기의 타일로 채우는 경우의 수를 출력하는 문제. 해당 문제는 홀수 일 때는 경우의 수가 0이 되며 짝수만 경우의 수를 갖는다. 2와 4의 경우의 수를 판단 시 각 3, 11이 되게 되는데 이를 통해 dpn = dpn-2 + 2의 경우의 수를 갖는 다는 것을 알게 되었다. 더 큰 짝수들은 더해지는 값들이 2와 더불어 -4의 경우의 수와 x2를 해준 값을 더해야 함으로 dp0의 값을 1로 설정 후 반복문을 0부터 i-4의 값까지 x2하여 더해주어 풀었다.","html":"<p>3xN의 크기를 갖는 배열에 2x1, 1x2 크기의 타일로 채우는 경우의 수를 출력하는 문제. 해당 문제는 홀수 일 때는 경우의 수가 0이 되며 짝수만 경우의 수를 갖는다. 2와 4의 경우의 수를 판단 시 각 3, 11이 되게 되는데 이를 통해 dp[n] = dp[n-2] + 2의 경우의 수를 갖는 다는 것을 알게 되었다. 더 큰 짝수들은 더해지는 값들이 2와 더불어 -4의 경우의 수와 x2를 해준 값을 더해야 함으로 dp[0]의 값을 1로 설정 후 반복문을 0부터 i-4의 값까지 x2하여 더해주어 풀었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># def solve(n):</span>\n<span class=\"token comment\">#     dp = [0 for _ in range(31)]</span>\n<span class=\"token comment\">#     dp[0], dp[2] = 1, 3</span>\n<span class=\"token comment\">#     for i in range(4, n+1, 2):</span>\n<span class=\"token comment\">#         dp[i] = dp[i-2] * 3</span>\n<span class=\"token comment\">#         for j in range(i-4, -1, -2):</span>\n<span class=\"token comment\">#             dp[i] += dp[j] * 2</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     return dp[n]</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># n = int(input())</span>\n<span class=\"token comment\"># print(solve(n))</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solve</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    dp <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">31</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n    dp<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> dp<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span>\n\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        dp<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> dp<span class=\"token punctuation\">[</span>i<span class=\"token operator\">-</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> <span class=\"token number\">3</span>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> i<span class=\"token operator\">-</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            dp<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> dp<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> <span class=\"token number\">2</span>\n    <span class=\"token keyword\">return</span> dp<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span>\n\nn <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solve<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-2133 - Python","date":"January 10, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-2133-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-5676-Python/"},"frontmatter":{"title":"BOJ-5676 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-9655-Python/"},"frontmatter":{"title":"BOJ-9655 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}