{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-1260-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"57287274-8f74-57de-9c38-8a8dee67ae28","excerpt":"기존에는 dfs와 bfs 연산을 나누며, 방문한 노드들을 저장한 배열에서 확인하는 연산 방법에 확인하는 방법으로 풀었다. 이번 풀이는 한 함수에서 dfs와 bfs 연산을 구분하여 연산하며 방문확인 배열을 만들어 방문확인에 소요되는 연산을 줄였다.","html":"<p>기존에는 dfs와 bfs 연산을 나누며, 방문한 노드들을 저장한 배열에서 확인하는 연산 방법에 확인하는 방법으로 풀었다. 이번 풀이는 한 함수에서 dfs와 bfs 연산을 구분하여 연산하며 방문확인 배열을 만들어 방문확인에 소요되는 연산을 줄였다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># from collections import deque</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def dfs(gra, sta):</span>\n<span class=\"token comment\">#     vis = []</span>\n<span class=\"token comment\">#     stack = deque([sta])</span>\n<span class=\"token comment\">#     while stack:</span>\n<span class=\"token comment\">#         nod = stack.pop()</span>\n<span class=\"token comment\">#         if nod not in vis:</span>\n<span class=\"token comment\">#             vis.append(nod)</span>\n<span class=\"token comment\">#             if nod in gra:</span>\n<span class=\"token comment\">#                 stack.extend(sorted(gra[nod], reverse=True))</span>\n<span class=\"token comment\">#     return \" \".join(str(i) for i in vis)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def bfs(gra, sta):</span>\n<span class=\"token comment\">#     vis = []</span>\n<span class=\"token comment\">#     que = deque([sta])</span>\n<span class=\"token comment\">#     while que:</span>\n<span class=\"token comment\">#         nod = que.popleft()</span>\n<span class=\"token comment\">#         if nod not in vis:</span>\n<span class=\"token comment\">#             vis.append(nod)</span>\n<span class=\"token comment\">#             if nod in gra:</span>\n<span class=\"token comment\">#                 que.extend(sorted(gra[nod]))</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     return \" \".join(str(i) for i in vis)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># graph = {}</span>\n<span class=\"token comment\"># n, m, start = map(int, input().split())</span>\n<span class=\"token comment\"># for _ in range(m):</span>\n<span class=\"token comment\">#     x, y = map(int, input().split())</span>\n<span class=\"token comment\">#     if x in graph:</span>\n<span class=\"token comment\">#         graph[x].append(y)</span>\n<span class=\"token comment\">#     else:</span>\n<span class=\"token comment\">#         graph[x] = [y]</span>\n<span class=\"token comment\">#     if y in graph:</span>\n<span class=\"token comment\">#         graph[y].append(x)</span>\n<span class=\"token comment\">#     else:</span>\n<span class=\"token comment\">#         graph[y] = [x]</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># print(dfs(graph, start))</span>\n<span class=\"token comment\"># print(bfs(graph, start))</span>\n\n<span class=\"token keyword\">import</span> sys\n<span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n<span class=\"token builtin\">input</span> <span class=\"token operator\">=</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solve</span><span class=\"token punctuation\">(</span>start<span class=\"token punctuation\">,</span> is_bfs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    q <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">if</span> is_bfs <span class=\"token keyword\">else</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    q<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>start<span class=\"token punctuation\">)</span>\n    visit <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token boolean\">False</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</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>\n    ans <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">while</span> q<span class=\"token punctuation\">:</span>\n        now <span class=\"token operator\">=</span> q<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">if</span> is_bfs <span class=\"token keyword\">else</span> q<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> visit<span class=\"token punctuation\">[</span>now<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            visit<span class=\"token punctuation\">[</span>now<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">True</span>\n            ans<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span>now<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">if</span> now <span class=\"token keyword\">in</span> graph<span class=\"token punctuation\">:</span>\n                q<span class=\"token punctuation\">.</span>extend<span class=\"token punctuation\">(</span><span class=\"token builtin\">sorted</span><span class=\"token punctuation\">(</span>graph<span class=\"token punctuation\">[</span>now<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">if</span> is_bfs <span class=\"token keyword\">else</span> <span class=\"token builtin\">sorted</span><span class=\"token punctuation\">(</span>graph<span class=\"token punctuation\">[</span>now<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> reverse<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token string\">\" \"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>ans<span class=\"token punctuation\">)</span>\n\nn<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> v <span class=\"token operator\">=</span> <span class=\"token builtin\">map</span><span class=\"token punctuation\">(</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>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ngraph <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>m<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    s<span class=\"token punctuation\">,</span> e <span class=\"token operator\">=</span> <span class=\"token builtin\">map</span><span class=\"token punctuation\">(</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>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> s <span class=\"token keyword\">in</span> graph<span class=\"token punctuation\">:</span> graph<span class=\"token punctuation\">[</span>s<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>e<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span> graph<span class=\"token punctuation\">[</span>s<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>e<span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">if</span> e <span class=\"token keyword\">in</span> graph<span class=\"token punctuation\">:</span> graph<span class=\"token punctuation\">[</span>e<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span> graph<span class=\"token punctuation\">[</span>e<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>s<span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solve<span class=\"token punctuation\">(</span>v<span class=\"token punctuation\">,</span> <span class=\"token boolean\">False</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solve<span class=\"token punctuation\">(</span>v<span class=\"token punctuation\">,</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-1260 - Python","date":"January 25, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-1260-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-2294-Python/"},"frontmatter":{"title":"BOJ-2294 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-1309-Python/"},"frontmatter":{"title":"BOJ-1309 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}