{"componentChunkName":"component---src-templates-blog-post-js","path":"/algorithm/2022-09-25---algorithm-04/","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":"30179acd-a74c-555a-8efb-a86a48a2604e","excerpt":"1. 큐 1.1 정의 큐(Queue)은 입력시 데이터에 대해서 순차적으로 저장합니다. 출력시  저장된 데이터를 기준으로 출력됩니다.\n이를 FIFO(First In First Out)구조로 저장하는 형식이라고 말합니다. 쉽게 이해하기 위해서 보통 줄서기를 예로 설명할 수 있습니다. 차례대로 줄을 서고(입력) 입장(출력) 순서는 가장 먼저 줄을 선 사람 입력을 ‘인큐(enqueue)’ 출력을 ‘디큐(dequeue)‘라고 표현합니다.\n   queueList =   queue 생성 queueList…","html":"<h1 id=\"1-큐\" style=\"position:relative;\"><a href=\"#1-%ED%81%90\" 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<p>큐(Queue)은 입력시 데이터에 대해서 순차적으로 저장합니다. 출력시 <code class=\"language-text\">가장 먼저</code> 저장된 데이터를 기준으로 출력됩니다.\n이를 FIFO(First In First Out)구조로 저장하는 형식이라고 말합니다.</p>\n<p>쉽게 이해하기 위해서 보통 줄서기를 예로 설명할 수 있습니다.<br>\n차례대로 줄을 서고(입력) 입장(출력) 순서는 가장 먼저 줄을 선 사람</p>\n<ul>\n<li>입력을 ‘인큐(enqueue)’ 출력을 ‘디큐(dequeue)‘라고 표현합니다.\n</br></li>\n</ul>\n<table>\n<thead>\n<tr>\n<th><code class=\"language-text\">python 사용법</code></th>\n<th><code class=\"language-text\">설명</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>queueList = [ ]</td>\n<td>queue 생성</td>\n</tr>\n<tr>\n<td>queueList.append(e)</td>\n<td>입력</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">queueList.pop(0)</code></td>\n<td>출력(가장 처음요소)</td>\n</tr>\n</tbody>\n</table>\n<p><strong>주의사항</strong>\nList를 사용해 Queue를 사용하는 경우 출력시 가장 첫번째 요소를 출력하기 때문에 나머지 저장된 요소들이 모두 앞으로 한번 이동해야 되기 때문에\nList의 크기가 크다면 비효율적입니다.</p>\n<p>It is also possible to use a list as a queue, where the first element added is the first element retrieved (“first-in, first-out”); however, lists are not efficient for this purpose. While appends and pops from the end of list are fast, doing inserts or pops from the beginning of a list is slow (because all of the other elements have to be shifted by one).<br>\n출처: <a href=\"https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-queues\">Python 공식문서</a></p>\n<p>따라서 자료집합의 형태가 크다면 <code class=\"language-text\">collections</code>의 사용을 고려해야 합니다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n  queue <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"Eric\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"John\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Michael\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n  queue<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token string\">\"Terry\"</span><span class=\"token punctuation\">)</span>\n  queue<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token string\">\"Graham\"</span><span class=\"token punctuation\">)</span>\n  <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>queue<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>                 <span class=\"token comment\">#'Eric'</span>\n  <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>queue<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>                 <span class=\"token comment\">#'John'</span>\n  <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>queue<span class=\"token punctuation\">)</span>                           <span class=\"token comment\">#deque(['Michael', 'Terry', 'Graham'])</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\"><span class=\"token comment\"># 회문판단 Queue</span>\n<span class=\"token triple-quoted-string string\">\"\"\"\ngiven :\n  noPalindromeSentence = '기찻길'\n  yesPalindromeSentence = '역삼역'\n\nwhen :\n  print(checkPalindromeWithQueue(noPalindromeSentence))\n  print(checkPalindromeWithQueue(yesPalindromeSentence))\n\nthen :\n  queue을 이용해 구현 되어야 하며\n  반환값은 False, True가 되어야 한다\n\n\"\"\"</span>\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">checkPalindromeWithQueue</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n    queue <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    reversedQueue <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">for</span> s <span class=\"token keyword\">in</span> sentence<span class=\"token punctuation\">:</span>\n        queue<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">.</span>lower<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">for</span> s <span class=\"token keyword\">in</span> <span class=\"token builtin\">reversed</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        reversedQueue<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">.</span>lower<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">while</span> queue<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> queue<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> reversedQueue<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">return</span> <span class=\"token boolean\">False</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token boolean\">True</span>\n\n\nnoPalindromeSentence <span class=\"token operator\">=</span> <span class=\"token string\">'기찻길'</span>\nyesPalindromeSentence <span class=\"token operator\">=</span> <span class=\"token string\">'역삼역'</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>checkPalindromeWithQueue<span class=\"token punctuation\">(</span>noPalindromeSentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>checkPalindromeWithQueue<span class=\"token punctuation\">(</span>yesPalindromeSentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h1 id=\"2-스택\" style=\"position:relative;\"><a href=\"#2-%EC%8A%A4%ED%83%9D\" 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<p>스택(Stack)은 입력시 데이터에 대해서 순차적으로 저장합니다. 출력시 <code class=\"language-text\">가장 나중</code>에 저장된 데이터를 기준으로 출력됩니다.\n이를 LIFO(Last In First Out)구조로 저장하는 형식이라 말합니다.</p>\n<p>쉽게 이해하기 위해서 보통 접시 쌓기를 예로 설명할 수 있습니다.<br>\n차레대로 접시를 쌓고(입력) 꺼내기(출력) 순서는 가장 나중에 입력한 접시</p>\n<ul>\n<li>입력을 ‘푸시(push)’ 출력을 ‘팝(pop)‘이라고 표현합니다.\n</br></li>\n</ul>\n<table>\n<thead>\n<tr>\n<th><code class=\"language-text\">python 사용법</code></th>\n<th><code class=\"language-text\">설명</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>queueList = [ ]</td>\n<td>stack 생성</td>\n</tr>\n<tr>\n<td>queueList.push(e)</td>\n<td>입력</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">queueList.pop()</code></td>\n<td>출력(가장 마지막 요소)</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"21-코드구현\" style=\"position:relative;\"><a href=\"#21-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" 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<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># 회문판단 Stack</span>\n<span class=\"token triple-quoted-string string\">\"\"\"\ngiven :\n  noPalindromeSentence = '기찻길'\n  yesPalindromeSentence = '역삼역'\n\nwhen :\n  print(checkPalindromeWithStack(noPalindromeSentence))\n  print(checkPalindromeWithStack(yesPalindromeSentence))\n\nthen :\n  stack을 이용해 구현 되어야 하며\n  반환값은 False, True가 되어야 한다\n\n\"\"\"</span>\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">checkPalindromeWithStack</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n    stack <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    reversedStack <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">for</span> s <span class=\"token keyword\">in</span> sentence<span class=\"token punctuation\">:</span>\n        stack<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">.</span>lower<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">for</span> s <span class=\"token keyword\">in</span> <span class=\"token builtin\">reversed</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        reversedStack<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">.</span>lower<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">while</span> stack<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> stack<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> reversedStack<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">return</span> <span class=\"token boolean\">False</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token boolean\">True</span>\n\n\nnoPalindromeSentence <span class=\"token operator\">=</span> <span class=\"token string\">'기찻길'</span>\nyesPalindromeSentence <span class=\"token operator\">=</span> <span class=\"token string\">'역삼역'</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>checkPalindromeWithStack<span class=\"token punctuation\">(</span>noPalindromeSentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>checkPalindromeWithStack<span class=\"token punctuation\">(</span>yesPalindromeSentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h1 id=\"3-딕셔너리\" style=\"position:relative;\"><a href=\"#3-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC\" 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>딕셔너리(dictionary)은 키(key)와 값(value)으로 대응 관게를 저장하는 자료 구조입니다. Java의 HashMap과 유사합니다.\n<a href=\"https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%85%8C%EC%9D%B4%EB%B8%94\">HashTable</a>을 기반으로 한 자료구조 입니다.</p>\n<p><img src=\"/content/hashtable.png\" alt=\"hashtable.png\"></p>\n<p>insertKey = <code class=\"language-text\">Sandara Dee</code>\nkeys = <code class=\"language-text\">입력하고자 하는 전체 크기</code></p>\n<p>위 그림처럼 입력하고자 하는 키에 대한 index는\nindex = hash_function(<code class=\"language-text\">insertKey</code>) % <code class=\"language-text\">keys</code> \n통해서 index 값을 구해내고, buckets[keys]에 insertKey와 value를 저장합니다.</p>\n<p>이러한 저장된 자료구조는 키에 대한 값을 찾을때 키를 기준으로 바로 index에 접근할 수 있기 때문에\nO(1~n)의 시간복잡도를 가집니다.\nkey를 기준으로 바로 접근하기 떄문에 시간복잡도는 O(1)이 됩니다. 하지만 hash_function을 통해 index를 구하는 과정에서\ncollistion(충돌)이 발생시 처리 과정에서 최악의경우 O(n)의 복잡도를 보이게 된다.</p>\n<p><strong>주의사항(collistion)</strong>\npython3.5 미만에서는 입력에 대한 key 삽입순서가 보장되지 않습니다.\npython dictionary의 collision(충돌) 처리 방식은 Open addressing방식 중 Linear Probing 방식을 사용하였기 때문에\nkey 입력에 대한 순서가 보장 되지 않습니다.</p>\n<ul>\n<li>collistion : hash_function(<code class=\"language-text\">insertKey</code>) % <code class=\"language-text\">keys</code>의 값이 동일한 경우</li>\n<li>Open addressing : 추가적인 메모리할당 없이 hash table array의 빈공간을 사용하는 방법입니다.</li>\n<li>Linear Probing : Open addressing의 구현방식중 하나로 충돌이 발생했을 때, 충돌이 발생한 Index뒤에 버킷중 비어있는 곳에 할당하는 방식입니다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">d <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">'a'</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'b'</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'c'</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">}</span>\nl <span class=\"token operator\">=</span> d<span class=\"token punctuation\">.</span>keys<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">)</span> <span class=\"token comment\">#['a', 'c', 'b']</span></code></pre></div>\n<table>\n<thead>\n<tr>\n<th><code class=\"language-text\">python 사용법</code></th>\n<th><code class=\"language-text\">설명</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dictionary = {}</td>\n<td>dictionary 생성</td>\n</tr>\n<tr>\n<td>dictionary[key] = value</td>\n<td>해당 dictionary에 key가 있다면 value를 Update, 없다면 key,value를 Insert</td>\n</tr>\n<tr>\n<td>del dictionary[key]</td>\n<td>dictionary에서 해당 key삭제</td>\n</tr>\n<tr>\n<td>dictionary.clear()</td>\n<td>모든 key를 삭제합니다.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"31-코드구현\" style=\"position:relative;\"><a href=\"#31-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" 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<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token triple-quoted-string string\">\"\"\"\ngiven :\n  studentDict = {\n      39: 'Justin',\n      14: 'John',\n      67: 'Mike',\n      105: 'Summer',\n  }\n\nwhen :\n  print(findNameById(39))\n\nthen :\n  key가 존재하는경우 return true\n  그렇지 않으면 false\n\"\"\"</span>\nstudentDict <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token number\">39</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Justin'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token number\">14</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'John'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token number\">67</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Mike'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token number\">105</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Summer'</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">findNameById</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> key <span class=\"token keyword\">in</span> studentDict<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">True</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token boolean\">False</span>\n\n\n<span class=\"token comment\">#print(findNameById(39)) # true</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>findNameById<span class=\"token punctuation\">(</span><span class=\"token number\">20</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>  <span class=\"token comment\"># false</span></code></pre></div>\n<h1 id=\"4-그래프\" style=\"position:relative;\"><a href=\"#4-%EA%B7%B8%EB%9E%98%ED%94%84\" aria-label=\"4 그래프 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>4. 그래프</h1>\n<h2 id=\"41-정의\" style=\"position:relative;\"><a href=\"#41-%EC%A0%95%EC%9D%98\" aria-label=\"41 정의 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>4.1 정의</h2>\n<p><code class=\"language-text\">노드(정점)</code>과 <code class=\"language-text\">에지(간선)</code>를 이루어진 구조의 관계를 표현한 자료구조 입니다.\n간단히 말하면 점 과 선 사이의 관계입니다.</p>\n<p><img src=\"/content/graf.png\" alt=\"graf.png\"></p>\n<p><strong>그래프 용어정리</strong></p>\n<p>위 이미지를 참고 부탁드립니다.</p>\n<table>\n<thead>\n<tr>\n<th><code class=\"language-text\">용어</code></th>\n<th><code class=\"language-text\">설명</code></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>정점(vertex)</td>\n<td>노드(node),위치라 표현되며 실제 데이터가 저장되는 공간입니다. (A,B,C,D)</td>\n</tr>\n<tr>\n<td>간선(edge)</td>\n<td>노드 간의 관계. 즉, 노드(A,B,C,D)를 연결하는 선입니다.</td>\n</tr>\n<tr>\n<td>인접 정점(adjacent vertex)</td>\n<td>하나의 정점에서 간선에 의해 직접 연결되어 있는 정점을 말합니다. A의 인접 정점은 B, C, D 입니다.</td>\n</tr>\n<tr>\n<td>차수(degree)</td>\n<td>정점에 연결된 간선의 수를 뜻 합니다. 위 그래프에서 정점 A의 차수는 3입니다.</td>\n</tr>\n<tr>\n<td>방향그래프</td>\n<td>간선의 방향이 존재하는 그래프입니다. 해당 방향으로만 이동이 가능합니다. <img src=\"/content/direction-graf.png\" alt=\"direction-graf.png\" style=\"width: 50%;display: block;\"></td>\n</tr>\n<tr>\n<td>진입차수(in-degree)</td>\n<td>방향그래프에서 외부 노드에서 나가는 간선이 수를 뜻합니다.</td>\n</tr>\n<tr>\n<td>진출 차수(out-degree)</td>\n<td>방향그래프에서 외부 노드에서 들어오는 간선이 수를 뜻합니다.</td>\n</tr>\n<tr>\n<td>인접 행렬 (Adjacency Materix)</td>\n<td>그래프의 연결 관계를 이차원 배열로 나타내는 방식입니다.</td>\n</tr>\n<tr>\n<td>인접 리스트 (Adjacency List)</td>\n<td>그래프의 각 정점에 인접한 정점들을 연결리스트(Linked List)로 표현하는 방법이다.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"42-코드구현\" style=\"position:relative;\"><a href=\"#42-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\" aria-label=\"42 코드구현 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>4.2 코드구현</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token triple-quoted-string string\">\"\"\"\n# graph 인접행렬\ngiven :\n  정점  (A, B, C, D)\n  무방향 간선 [(0,1),(0,2),(0,3),(2,3)\n  주어졌을때\n\nwhen :\n  graph = adjacencyMatrix()\n  graph.setVertex('A')\n  graph.setVertex('B')\n  graph.setVertex('C')\n  graph.setVertex('D')\n\n  graph.insertUndirectedEdge(0, 1)\n  graph.insertUndirectedEdge(0, 2)\n  graph.insertUndirectedEdge(0, 3)\n  graph.insertUndirectedEdge(2, 3)\n\nthen :\n  출력이 다음과 같아야 한다.\n       A B C D\n\n  A :  0 1 1 1\n\n  B :  1 0 0 0\n\n  C :  1 0 0 1\n\n  D :  1 0 1 0\n\n\"\"\"</span>\n\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">AdjacencyMatrix</span><span class=\"token punctuation\">:</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">__init__</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>MAX_VTXS <span class=\"token operator\">=</span> <span class=\"token number\">256</span>\n        self<span class=\"token punctuation\">.</span>size <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n        self<span class=\"token punctuation\">.</span>vertices <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n        self<span class=\"token punctuation\">.</span>adjMatrix <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">getVertex</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> self<span class=\"token punctuation\">.</span>vertices<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">setVertex</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> node<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> self<span class=\"token punctuation\">.</span>size <span class=\"token operator\">></span> self<span class=\"token punctuation\">.</span>MAX_VTXS<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">return</span>\n        self<span class=\"token punctuation\">.</span>vertices<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">)</span>\n        self<span class=\"token punctuation\">.</span>size <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>size <span class=\"token operator\">+</span> <span class=\"token number\">1</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">getEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">setEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">,</span> value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> value\n        <span class=\"token keyword\">except</span><span class=\"token punctuation\">:</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span> <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 builtin\">len</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>vertices<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> value\n\n        <span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> value\n        <span class=\"token keyword\">except</span><span class=\"token punctuation\">:</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span> <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 builtin\">len</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>vertices<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            self<span class=\"token punctuation\">.</span>adjMatrix<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> value\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">insertUndirectedEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>setEdge<span class=\"token punctuation\">(</span>m<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n        self<span class=\"token punctuation\">.</span>setEdge<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">drawGraph</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'    '</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">' '</span><span class=\"token punctuation\">)</span>\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>self<span class=\"token punctuation\">.</span>size<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>getVertex<span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">' '</span><span class=\"token punctuation\">)</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>self<span class=\"token punctuation\">.</span>size<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\n'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>getVertex<span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">': '</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">' '</span><span class=\"token punctuation\">)</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>self<span class=\"token punctuation\">.</span>size<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>getEdge<span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">' '</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'\\n'</span><span class=\"token punctuation\">)</span>\n\n\n<span class=\"token comment\">#정점 삽입 (A, B, C, D)</span>\ngraph <span class=\"token operator\">=</span> AdjacencyMatrix<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>setVertex<span class=\"token punctuation\">(</span><span class=\"token string\">'A'</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>setVertex<span class=\"token punctuation\">(</span><span class=\"token string\">'B'</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>setVertex<span class=\"token punctuation\">(</span><span class=\"token string\">'C'</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>setVertex<span class=\"token punctuation\">(</span><span class=\"token string\">'D'</span><span class=\"token punctuation\">)</span>\n\ngraph<span class=\"token punctuation\">.</span>insertUndirectedEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>insertUndirectedEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>insertUndirectedEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>insertUndirectedEdge<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\n\ngraph<span class=\"token punctuation\">.</span>drawGraph<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 triple-quoted-string string\">\"\"\"\n# graph 인접리스트\ngiven:\n  3개 vertex(정점)과 (0,1) (0,2) 간선(edge)가 주어졌을때\nwhen:\n  V = 3\n  graph = AdjacencyList(V)\n  graph.addEdge(0, 1)\n  graph.addEdge(0, 2)\n  graph.drawGraph()\nthen:\n  출력이 다음과 같아야 한다.\n\n  vertext:0\n  0 -> 2 -> 1\n\n  vertext:1\n  1 -> 0\n\n  vertext:2\n  2 -> 0\n\"\"\"</span>\n\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">AdjacencyList</span><span class=\"token punctuation\">:</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">__init__</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> vertices<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>V <span class=\"token operator\">=</span> vertices\n        self<span class=\"token punctuation\">.</span>graph <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token boolean\">None</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> self<span class=\"token punctuation\">.</span>V\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">getLinkNode</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> data<span class=\"token punctuation\">,</span> pointer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">:</span> data<span class=\"token punctuation\">,</span> <span class=\"token string\">'pointer'</span><span class=\"token punctuation\">:</span> pointer<span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">addEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> source<span class=\"token punctuation\">,</span> target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n        self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>source<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>getLinkNode<span class=\"token punctuation\">(</span>data<span class=\"token operator\">=</span>target<span class=\"token punctuation\">,</span>\n                                              pointer<span class=\"token operator\">=</span>self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>source<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n        <span class=\"token comment\">#if it is an undirected graph.</span>\n        self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>getLinkNode<span class=\"token punctuation\">(</span>data<span class=\"token operator\">=</span>source<span class=\"token punctuation\">,</span>\n                                              pointer<span class=\"token operator\">=</span>self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">drawGraph</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</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>self<span class=\"token punctuation\">.</span>V<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">'vertext:{0}\\n{0}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n            temp <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n\n            <span class=\"token keyword\">while</span> temp<span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" -> {}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>temp<span class=\"token punctuation\">[</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n                temp <span class=\"token operator\">=</span> temp<span class=\"token punctuation\">[</span><span class=\"token string\">'pointer'</span><span class=\"token punctuation\">]</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">' \\n'</span><span class=\"token punctuation\">)</span>\n\n\nV <span class=\"token operator\">=</span> <span class=\"token number\">3</span>\ngraph <span class=\"token operator\">=</span> AdjacencyList<span class=\"token punctuation\">(</span>V<span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ngraph<span class=\"token punctuation\">.</span>drawGraph<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 triple-quoted-string string\">'''\nDFS(Depth First Search)\n\ngiven:\n  6개 vertex(정점)과 (0,1), (0,2), (0, 3), (1, 2),(1, 3),(1, 4),(2, 0),(2, 4),(3, 0),\n  (4, 1),(4, 5),(5, 2),(5, 4) 간선(edge)가 주어졌을때\n\nwhen:\n  V = 6\n  dfsGraph = dfsWithAdjList(V)\n  dfsGraph.addEdge(0, 2)\n  dfsGraph.addEdge(0, 3)\n  dfsGraph.addEdge(1, 2)\n  dfsGraph.addEdge(1, 3)\n  dfsGraph.addEdge(1, 4)\n  dfsGraph.addEdge(2, 0)\n  dfsGraph.addEdge(2, 4)\n  dfsGraph.addEdge(3, 0)\n  dfsGraph.addEdge(4, 1)\n  dfsGraph.addEdge(4, 5)\n  dfsGraph.addEdge(5, 2)\n  dfsGraph.addEdge(5, 4)\n  print(dfsGraph.display(1))\n\n\nthen:\n [1, 4, 5, 2, 0, 3]\n'''</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">dfsWithAdjList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">__init__</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> V<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>vertex <span class=\"token operator\">=</span> V\n        self<span class=\"token punctuation\">.</span>graph <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span>  <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>vertex<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">addEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> source<span class=\"token punctuation\">,</span> target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>source<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">display</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> startNode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n        visited <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n        stack <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>startNode<span class=\"token punctuation\">]</span>\n        <span class=\"token keyword\">while</span> stack<span class=\"token punctuation\">:</span>\n            <span class=\"token triple-quoted-string string\">'''\n              dfs에서 stack을 사용하는 이유는\n              시작 vertex가 1인경우 아래와 같이 진행된다. 따라서 수직적으로 검색하기 위해서 queue를 사용해야한다.\n              1st\n              visited = [1]\n              queue = [2,3,4]\n\n              2st\n              visited [1,4]\n              queue = [3,4,5]\n\n            '''</span>\n            n <span class=\"token operator\">=</span> stack<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n            <span class=\"token keyword\">if</span> n <span class=\"token keyword\">not</span> <span class=\"token keyword\">in</span> visited<span class=\"token punctuation\">:</span>\n                visited<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span>\n\n                stack <span class=\"token operator\">+=</span> <span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span>visited<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> visited\n\n\nV <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\ndfsGraph <span class=\"token operator\">=</span> dfsWithAdjList<span class=\"token punctuation\">(</span>V<span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<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>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ndfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>dfsGraph<span class=\"token punctuation\">.</span>display<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><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 triple-quoted-string string\">'''\n#bfs\ngiven:\n  6개 vertex(정점)과 (0,1), (0,2), (0, 3), (1, 2),(1, 3),(1, 4),(2, 0),(2, 4),(3, 0),(4, 1),(4, 5),(5, 2),(5, 4) 간선(edge)가 주어졌을때\n\nwhen:\n  V = 6\n  bfsGraph = bfsWithAdjList(V)\n  bfsGraph.addEdge(0, 2)\n  bfsGraph.addEdge(0, 3)\n  bfsGraph.addEdge(1, 2)\n  bfsGraph.addEdge(1, 3)\n  bfsGraph.addEdge(1, 4)\n  bfsGraph.addEdge(2, 0)\n  bfsGraph.addEdge(2, 4)\n  bfsGraph.addEdge(3, 0)\n  bfsGraph.addEdge(4, 1)\n  bfsGraph.addEdge(4, 5)\n  bfsGraph.addEdge(5, 2)\n  bfsGraph.addEdge(5, 4)\n  print(bfsGraph.display(1))\n\n\nthen:\n [1, 2, 3, 4, 0, 5]\n\n'''</span>\n<span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">bfsWithAdjList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">__init__</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> V<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>vertex <span class=\"token operator\">=</span> V\n        self<span class=\"token punctuation\">.</span>graph <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>vertex<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">addEdge</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> source<span class=\"token punctuation\">,</span> target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>source<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">def</span> <span class=\"token function\">display</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> startNode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\n        visited <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n        <span class=\"token triple-quoted-string string\">'''\n          bfs에서 queue을 사용하는 이유는 bfs는 기준 노드 기준으로 인접 노드들을 탐색하나가게 됩니다.\n          시작 vertex가 1인경우 아래와 같이 진행된다. 따라서 수평적으로 검색하기 위해서 queue를 사용해야한다.\n          1st\n           visited = [1]\n           queue = [2,3,4]\n\n          2st\n           visited [1,2]\n           queue = [3,4,0]\n\n        '''</span>\n        queue <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>startNode<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">while</span> queue<span class=\"token punctuation\">:</span>\n            n <span class=\"token operator\">=</span> queue<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">if</span> n <span class=\"token keyword\">not</span> <span class=\"token keyword\">in</span> visited<span class=\"token punctuation\">:</span>\n                visited<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span>\n\n                queue <span class=\"token operator\">+=</span> <span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>graph<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span>visited<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> visited\n\n\nV <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\nbfsGraph <span class=\"token operator\">=</span> bfsWithAdjList<span class=\"token punctuation\">(</span>V<span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<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>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\nbfsGraph<span class=\"token punctuation\">.</span>addEdge<span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>bfsGraph<span class=\"token punctuation\">.</span>display<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/algorithm/2022-09-25---algorithm-04/#1-%ED%81%90\">1. 큐</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#11-%EC%A0%95%EC%9D%98\">1.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#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-25---algorithm-04/#2-%EC%8A%A4%ED%83%9D\">2. 스택</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#21-%EC%A0%95%EC%9D%98\">2.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#21-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">2.1 코드구현</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/algorithm/2022-09-25---algorithm-04/#3-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC\">3. 딕셔너리</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#31-%EC%A0%95%EC%9D%98\">3.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#31-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">3.1 코드구현</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/algorithm/2022-09-25---algorithm-04/#4-%EA%B7%B8%EB%9E%98%ED%94%84\">4. 그래프</a></p>\n<ul>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#41-%EC%A0%95%EC%9D%98\">4.1 정의</a></li>\n<li><a href=\"/algorithm/2022-09-25---algorithm-04/#42-%EC%BD%94%EB%93%9C%EA%B5%AC%ED%98%84\">4.2 코드구현</a></li>\n</ul>\n</li>\n</ul>","frontmatter":{"title":"알고리즘 기초 Chapter04","date":"September 25, 2022"}}},"pageContext":{"slug":"/algorithm/2022-09-25---algorithm-04/","previous":{"fields":{"slug":"/algorithm/2022-09-18---algorithm-03/"},"frontmatter":{"title":"알고리즘 기초 Chapter03"}},"next":{"fields":{"slug":"/react/2022-12.10---next-study-01/"},"frontmatter":{"title":"Next.js & React Study (1)"}}}},"staticQueryHashes":["2486386679","3128451518"]}