{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-2606-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"4d2f24dd-3591-5efc-8e48-57990f11909d","excerpt":"그래프 탐색을 이용한 바이러스 문제를 다시 풀어보았다. 기존 방법인 현재 노드의 방문확인 후 연결된 노드들을 extend하는 방법을 유지하며 그래프의 선언 및 추가 부분을 깔끔하게 바꾼 방법으로 풀었으며 다른 방법은 요즘 주로 사용하는 자식 노드들을 기준으로 반복을 돌며 자식노드들의 방문 확인 후 q에 추가하는 방법이다. 두 방법 중 extend하는 방법이 시간이 백준 상 4ms 차이로 빠른데, 내장 함수 사용에서 나오는 차이갔다. 하지만 extend…","html":"<p>그래프 탐색을 이용한 바이러스 문제를 다시 풀어보았다. 기존 방법인 현재 노드의 방문확인 후 연결된 노드들을 extend하는 방법을 유지하며 그래프의 선언 및 추가 부분을 깔끔하게 바꾼 방법으로 풀었으며 다른 방법은 요즘 주로 사용하는 자식 노드들을 기준으로 반복을 돌며 자식노드들의 방문 확인 후 q에 추가하는 방법이다. 두 방법 중 extend하는 방법이 시간이 백준 상 4ms 차이로 빠른데, 내장 함수 사용에서 나오는 차이갔다. 하지만 extend는 확장성이 떨어지기 때문에 간단한 문제에서만 쓰일 것 같은 내 예상이다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># def dfs(graph):</span>\n<span class=\"token comment\">#     visit = []</span>\n<span class=\"token comment\">#     stack = [1]</span>\n<span class=\"token comment\">#     while stack:</span>\n<span class=\"token comment\">#         node = stack.pop()</span>\n<span class=\"token comment\">#         if node not in visit:</span>\n<span class=\"token comment\">#             visit.append(node)</span>\n<span class=\"token comment\">#             if node in graph:</span>\n<span class=\"token comment\">#                 stack.extend(graph[node])</span>\n<span class=\"token comment\">#     return visit</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># graph = {}</span>\n<span class=\"token comment\"># input()</span>\n<span class=\"token comment\"># for _ in range(int(input())):</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(len(dfs(graph))-1)</span>\n\n<span class=\"token comment\"># def solve():</span>\n<span class=\"token comment\">#     visit = [False for _ in range(n+1)]</span>\n<span class=\"token comment\">#     visit[1] = True</span>\n<span class=\"token comment\">#     q = [1]</span>\n<span class=\"token comment\">#     ans = 0</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     while q:</span>\n<span class=\"token comment\">#         node = q.pop()</span>\n<span class=\"token comment\">#         for next_node in graph[node]:</span>\n<span class=\"token comment\">#             if not visit[next_node]:</span>\n<span class=\"token comment\">#                 visit[next_node] = True</span>\n<span class=\"token comment\">#                 q.append(next_node)</span>\n<span class=\"token comment\">#                 ans += 1</span>\n<span class=\"token comment\">#     return ans</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># n = int(input())</span>\n<span class=\"token comment\"># m = int(input())</span>\n<span class=\"token comment\"># graph = {i: [] for i in range(1, n+1)}</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># for _ in range(m):</span>\n<span class=\"token comment\">#     s, e = map(int, input().split())</span>\n<span class=\"token comment\">#     graph[s].append(e)</span>\n<span class=\"token comment\">#     graph[e].append(s)</span>\n<span class=\"token comment\"># print(solve())</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solve</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><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    q <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n\n    <span class=\"token keyword\">while</span> q<span class=\"token punctuation\">:</span>\n        node <span class=\"token operator\">=</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>node<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            visit<span class=\"token punctuation\">[</span>node<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">True</span>\n            q<span class=\"token punctuation\">.</span>extend<span class=\"token punctuation\">(</span>graph<span class=\"token punctuation\">[</span>node<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">return</span> visit<span class=\"token punctuation\">.</span>count<span class=\"token punctuation\">(</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span>\n\nn <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nm <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>\ngraph <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>i<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><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>\n\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    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    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\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solve<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-2606 - Python","date":"January 28, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-2606-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-10282-Python/"},"frontmatter":{"title":"BOJ-10282 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-1719-Python/"},"frontmatter":{"title":"BOJ-1719 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}