{"data":{"site":{"siteMetadata":{"title":"HOME | blackpudding","subtitle":"고생했어. 오늘도.","copyright":"© All rights reserved.","author":{"name":"William JO","github":"blackpudding96"},"disqusShortname":"blackpudding","url":"https://blackpudding.netlify.com"}},"markdownRemark":{"id":"e3fdf888-a7e3-5f17-be82-e643319c0bc0","html":"<h1>10448번 : 유레카 이론</h1>\n<p>👉 <a href=\"https://www.acmicpc.net/problem/10448\">문제 바로가기</a></p>\n<h2>배경 지식</h2>\n<ul>\n<li><code class=\"language-text\">브루트 포스(Brute Force)</code> : 완전탐색 알고리즘; <strong>가능한 모든 경우의 수를 모두 탐색</strong>하는 알고리즘</li>\n</ul>\n<h2>푼 방법</h2>\n<p>브루트 포스 알고리즘(Brute Force Algorithm)은 <strong>매우 단순무식한 알고리즘</strong>이다. 가능한 모든 경우를 다 체크해서 문제를 해결하는 방식인데, 이 문제에서 가능한 경우의 수가 브루트포스를 써도 될 정도여서 썼다.</p>\n<p><strong>시간 면에서 매우 비효율적인 알고리즘</strong>이니 <strong>다른 알고리즘을 생각하는 출발점</strong>으로 생각하거나 혹은 경우의 수가 적은 문제에서만 사용하면 된다.</p>\n<p>문제에서 입력받는 수의 범위가 1000으로 그렇게 크지않으니까 <strong>1000보다 작은 삼각수들을 모두 구해놓고 반복문을 돌려 3개의 삼각수를 조합</strong>해본다. 3개의 삼각수의 합이 숫자로 표현되면 1을, 그렇지 않으면 0을 출력하면 된다.</p>\n<h2>내 정답 코드 (C++)</h2>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n\n<span class=\"token keyword\">int</span> triangular_num<span class=\"token punctuation\">[</span><span class=\"token number\">45</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> sum<span class=\"token punctuation\">;</span>\n\nbool <span class=\"token function\">check</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">int</span><span class=\"token operator\">&amp;</span> n<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">45</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;</span> <span class=\"token number\">45</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>j<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> k <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> k <span class=\"token operator\">&lt;</span> <span class=\"token number\">45</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>k<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t\tsum <span class=\"token operator\">=</span> triangular_num<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> triangular_num<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> triangular_num<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\t\t\t\n\t\t\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sum <span class=\"token operator\">==</span> n<span class=\"token punctuation\">)</span>\n\t\t\t\t\t<span class=\"token keyword\">return</span> true<span class=\"token punctuation\">;</span>\n\t\t\t\t<span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sum <span class=\"token operator\">></span> n<span class=\"token punctuation\">)</span>\n\t\t\t\t\t<span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t\t\t\t<span class=\"token keyword\">else</span>\n\t\t\t\t\t<span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token punctuation\">}</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\t<span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ios<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token function\">sync_with_stdio</span><span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">int</span> t<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> t<span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">45</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span>\n\t\ttriangular_num<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>i<span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> t<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> n<span class=\"token punctuation\">;</span>\n\t\t\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token function\">check</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">'\\n'</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\t<span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3>References</h3>\n<p><a href=\"https://hcr3066.tistory.com/26\">https://hcr3066.tistory.com/26</a><br>\n<a href=\"https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84_%EB%8C%80%EC%9E%85_%EA%B3%B5%EA%B2%A9\">https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84<em>%EB%8C%80%EC%9E%85</em>%EA%B3%B5%EA%B2%A9</a></p>","fields":{"tagSlugs":["/tags/백준/","/tags/algorithm/"],"slug":"/posts/baekjoons/10448/"},"frontmatter":{"title":"[백준] 10448 : 유레카 이론","tags":["백준","Algorithm"],"date":"2020-04-17","description":"백준 10448번 문제 : 유레카 이론"}}},"pageContext":{"slug":"/posts/baekjoons/10448/"}}