{"componentChunkName":"component---src-templates-blog-post-js","path":"/algorithm/2022-09-14---algorithm-02/","result":{"data":{"site":{"siteMetadata":{"title":"주 1회 작성하는 개발 블로그","author":"JinhyeongKim","siteUrl":"https://bnt10.github.io","comment":{"disqusShortName":"bnt10-github-io","utterances":"JinHyongKim/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"677967e5-daf6-5c5f-8112-034deff38e0f","excerpt":"1. 팩토리얼 1.1 정의 팩토리얼은 1부터 n까지 연속한 숫자를 차례로 곱한 값입니다. 아래는 팩토리얼을 이해하기 위한 예시 입니다. 1.2 코드구현 2. 재귀호출 2.1 정의 재귀 호출(recursion)은 어떤 함수 안에서 자기 자신을 부르는 것을 말합니다. 2.2 코드구현 3. 하노이의 탑 3.1 정의 하노이의 탑(Tower of Hanoi…","html":"<h1 id=\"1-팩토리얼\" style=\"position:relative;\"><a href=\"#1-%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC\" aria-label=\"1 팩토리얼 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 팩토리얼</h1>\n<h2 id=\"11-정의\" style=\"position:relative;\"><a href=\"#11-%EC%A0%95%EC%9D%98\" aria-label=\"11 정의 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1.1 정의</h2>\n<ul>\n<li>\n<p>팩토리얼은 1부터 n까지 연속한 숫자를 차례로 곱한 값입니다.</p>\n<p>아래는 팩토리얼을 이해하기 위한 예시 입니다.</p>\n</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">\t<span class=\"token number\">1</span>! <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n\t<span class=\"token number\">2</span>! <span class=\"token operator\">=</span> <span class=\"token number\">1</span> × <span class=\"token number\">2</span> <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n\t<span class=\"token number\">3</span>! <span class=\"token operator\">=</span> <span class=\"token number\">1</span> × <span class=\"token number\">2</span> × <span class=\"token number\">3</span> <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\n\tn! <span class=\"token operator\">=</span> <span class=\"token number\">1</span> × <span class=\"token number\">2</span> × <span class=\"token number\">3</span> × … × <span class=\"token punctuation\">(</span>n <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> × n\n\t단<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span>!은 <span class=\"token number\">1</span>이라고 약속합니다<span class=\"token punctuation\">.</span></code></pre></div>\n<h2 id=\"12-코드구현\" style=\"position:relative;\"><a href=\"#12-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" aria-label=\"12 코드구현 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1.2 코드구현</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">\t<span class=\"token comment\"># 입력: n</span>\n\t<span class=\"token comment\"># 출력: 1부터 n까지 연속한 숫자를 곱한 값</span>\n\n\t<span class=\"token keyword\">def</span> <span class=\"token function\">factorial</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\t\tnum <span class=\"token operator\">=</span> <span class=\"token number\">1</span>                        <span class=\"token comment\"># 곱을 계산할 변수</span>\n\t\t<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\">1</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 punctuation\">:</span>      <span class=\"token comment\"># 1부터 n까지 반복(n + 1은 제외)</span>\n\t\t\tnum <span class=\"token operator\">=</span> num <span class=\"token operator\">*</span> i              <span class=\"token comment\"># 곱셈 연산으로 수정</span>\n\t\t<span class=\"token keyword\">return</span> num\n\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>factorial<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>                 <span class=\"token comment\"># 1! = 1</span>\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>factorial<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>                 <span class=\"token comment\"># 5! = 120</span>\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>factorial<span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>                <span class=\"token comment\"># 10! = 3628800</span></code></pre></div>\n<h1 id=\"2-재귀호출\" style=\"position:relative;\"><a href=\"#2-%EC%9E%AC%EA%B7%80%ED%98%B8%EC%B6%9C\" aria-label=\"2 재귀호출 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 재귀호출</h1>\n<h2 id=\"21-정의\" style=\"position:relative;\"><a href=\"#21-%EC%A0%95%EC%9D%98\" aria-label=\"21 정의 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.1 정의</h2>\n<ul>\n<li>재귀 호출(recursion)은 어떤 함수 안에서 자기 자신을 부르는 것을 말합니다.</li>\n</ul>\n<h2 id=\"22-코드구현\" style=\"position:relative;\"><a href=\"#22-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" aria-label=\"22 코드구현 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.2 코드구현</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">\t<span class=\"token comment\"># 1부터 n까지의 합을 재귀호출을 이용하여 표현</span>\n\n\t<span class=\"token keyword\">def</span> <span class=\"token function\">sumByRecursion</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">if</span> n <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n\t\t\t<span class=\"token keyword\">return</span> n\n\t\tn <span class=\"token operator\">=</span> n <span class=\"token operator\">+</span> sumByRecursion<span class=\"token punctuation\">(</span>n <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> n\n\n\t<span class=\"token keyword\">if</span> __name__ <span class=\"token operator\">==</span> <span class=\"token string\">'__main__'</span><span class=\"token punctuation\">:</span>\n\t\t\tresult <span class=\"token operator\">=</span> sumByRecursion<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\n\t\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">\t<span class=\"token comment\"># 숫자 n개 중에서 최댓값을 찾는 재귀 호출</span>\n\n\tnumList <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">6</span><span class=\"token punctuation\">]</span>\n\tmaxValue <span class=\"token operator\">=</span> numList<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\n\t<span class=\"token keyword\">def</span> <span class=\"token function\">getMaxValue</span><span class=\"token punctuation\">(</span>numLength<span class=\"token punctuation\">,</span>maxValue<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\tnumLength <span class=\"token operator\">=</span> numLength <span class=\"token operator\">-</span> <span class=\"token number\">1</span>\n\t<span class=\"token keyword\">if</span> numLength <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">return</span> maxValue\n\tmaxValue <span class=\"token operator\">=</span> maxValue <span class=\"token keyword\">if</span> maxValue <span class=\"token operator\">>=</span> numList<span class=\"token punctuation\">[</span>numLength<span class=\"token punctuation\">]</span>  <span class=\"token keyword\">else</span> numList<span class=\"token punctuation\">[</span>numLength<span class=\"token punctuation\">]</span>\n\tgetMaxValue<span class=\"token punctuation\">(</span>numLength<span class=\"token punctuation\">,</span>maxValue<span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">return</span> maxValue\n\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>getMaxValue<span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>numList<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>maxValue<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\">#피보나치 수열을 재귀 방식으로 구현</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">fibonacci</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> n <span class=\"token operator\">&lt;=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> n\n\n    n <span class=\"token operator\">=</span> fibonacci<span class=\"token punctuation\">(</span>n <span class=\"token operator\">-</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> fibonacci<span class=\"token punctuation\">(</span>n <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> n\n\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>fibonacci<span class=\"token punctuation\">(</span><span class=\"token number\">6</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h1 id=\"3-하노이의-탑\" style=\"position:relative;\"><a href=\"#3-%ED%95%98%EB%85%B8%EC%9D%B4%EC%9D%98-%ED%83%91\" aria-label=\"3 하노이의 탑 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 하노이의 탑</h1>\n<h2 id=\"31-정의\" style=\"position:relative;\"><a href=\"#31-%EC%A0%95%EC%9D%98\" aria-label=\"31 정의 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3.1 정의</h2>\n<p>하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다.<br>\n세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있습니다.</p>\n<p>게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것입니다.</p>\n<ul>\n<li>한 번에 한개의 원판만 옮길 수 있습니다.</li>\n<li>가장 위에 있는 원판만 이동할 수 있습니다.</li>\n<li>큰 원판이 작은 원판 위에 있어서는 안됩니다.</li>\n</ul>\n<hr>\n<p>하노이의 탑 문제는 재귀 호출을 이용하여 풀 수 있는 가장 유명한 예제 중의 하나입니다.</p>\n<p><img src=\"/content/hanoi.png\" alt=\"hanoi.png\"></p>\n<h2 id=\"32-코드구현\" style=\"position:relative;\"><a href=\"#32-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" aria-label=\"32 코드구현 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3.2 코드구현</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\">#하노이의 탑 구현</span>\n\n\t<span class=\"token keyword\">def</span> <span class=\"token function\">hanoi</span><span class=\"token punctuation\">(</span>frm<span class=\"token punctuation\">,</span> to<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">,</span> count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n\t\t<span class=\"token keyword\">if</span> n <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n\t\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>frm<span class=\"token punctuation\">}</span></span><span class=\"token string\"> </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>to<span class=\"token punctuation\">}</span></span><span class=\"token string\"> : </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>count<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token number\">1</span>\n\t\t<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n\t\t\tempty <span class=\"token operator\">=</span> <span class=\"token number\">6</span> <span class=\"token operator\">-</span> frm <span class=\"token operator\">-</span> to\n\t\t\tcount <span class=\"token operator\">+=</span> hanoi<span class=\"token punctuation\">(</span>frm<span class=\"token punctuation\">,</span> empty<span class=\"token punctuation\">,</span> n <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> count<span class=\"token punctuation\">)</span>\n\t\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>frm<span class=\"token punctuation\">}</span></span><span class=\"token string\"> </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>to<span class=\"token punctuation\">}</span></span><span class=\"token string\">: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>count<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n\t\t\tcount <span class=\"token operator\">+=</span> hanoi<span class=\"token punctuation\">(</span>empty<span class=\"token punctuation\">,</span> to<span class=\"token punctuation\">,</span> n <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> count<span class=\"token punctuation\">)</span>\n\n\t\t<span class=\"token keyword\">return</span> count\n\n\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'원반의 개수: '</span><span class=\"token punctuation\">)</span>\n\tnumberOfDisk <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\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'원반들의 시작 위치: '</span><span class=\"token punctuation\">)</span>\n\tstartLocation <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\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'옮겨야 할 위치: '</span><span class=\"token punctuation\">)</span>\n\tdesLocation <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\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\n'</span><span class=\"token punctuation\">)</span>\n\ttotalCount <span class=\"token operator\">=</span> hanoi<span class=\"token punctuation\">(</span>startLocation<span class=\"token punctuation\">,</span> desLocation<span class=\"token punctuation\">,</span> numberOfDisk<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'총 이동 횟수: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>totalCount<span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span></code></pre></div>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/algorithm/2022-09-14---algorithm-02/#1-%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC\">1. 팩토리얼</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#11-%EC%A0%95%EC%9D%98\">1.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#12-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">1.2 코드구현</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/algorithm/2022-09-14---algorithm-02/#2-%EC%9E%AC%EA%B7%80%ED%98%B8%EC%B6%9C\">2. 재귀호출</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#21-%EC%A0%95%EC%9D%98\">2.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#22-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">2.2 코드구현</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/algorithm/2022-09-14---algorithm-02/#3-%ED%95%98%EB%85%B8%EC%9D%B4%EC%9D%98-%ED%83%91\">3. 하노이의 탑</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#31-%EC%A0%95%EC%9D%98\">3.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-14---algorithm-02/#32-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">3.2 코드구현</a></li>\n</ul>\n</li>\n</ul>","frontmatter":{"title":"알고리즘 기초 Chapter02","date":"September 14, 2022"}}},"pageContext":{"slug":"/algorithm/2022-09-14---algorithm-02/","previous":null,"next":{"fields":{"slug":"/algorithm/2022-09-18---algorithm-03/"},"frontmatter":{"title":"알고리즘 기초 Chapter03"}}}},"staticQueryHashes":["2486386679","3128451518"]}