{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-4195-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"261fcd13-973b-5e05-b926-b6388ca1c0d9","excerpt":"n개의 두 문자열이 공백으로 나눠져 입력된다. 해당 두 문자열은 서로 연결된 상태이며 매 입력마다 해당 관계의 연결된 모든 노드의 수를 입력하는 문제. 첫번째 풀이는 단순 DFS 탐색을 통해 풀었으나 예상했던 것 같이 시간초과결과를 받게 되었다. 입력되는 방문확인을 배열로 하며 in 메소드를 이용하여 확인한 것과 매 입력마다 DFS…","html":"<p>n개의 두 문자열이 공백으로 나눠져 입력된다. 해당 두 문자열은 서로 연결된 상태이며 매 입력마다 해당 관계의 연결된 모든 노드의 수를 입력하는 문제. 첫번째 풀이는 단순 DFS 탐색을 통해 풀었으나 예상했던 것 같이 시간초과결과를 받게 되었다. 입력되는 방문확인을 배열로 하며 in 메소드를 이용하여 확인한 것과 매 입력마다 DFS 연산을 수행하는 점이 작성하면서도 시간초과가 확실할 것으로 예상했다. 두 번째 풀이는 유니온 파인드 방법을 이용하여 풀었다. 부모 노드를 저장하는 딕셔너리, 해당 노드의 연결된 사람을 저장하는 딕셔너리 두개를 이용하여 union시 루트 노드의 값을 더해준 후 입력되는 문자열의 루트 노드의 수를 출력하여 풀었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># import sys</span>\n<span class=\"token comment\"># input = sys.stdin.readline</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def countFollow(node):</span>\n<span class=\"token comment\">#     q = [node]</span>\n<span class=\"token comment\">#     followers = [node]</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     while q:</span>\n<span class=\"token comment\">#         now = q.pop()</span>\n<span class=\"token comment\">#         if now in graph:</span>\n<span class=\"token comment\">#             for next in graph[now]:</span>\n<span class=\"token comment\">#                 if not next in followers:</span>\n<span class=\"token comment\">#                     followers.append(next)</span>\n<span class=\"token comment\">#                     q.append(next)</span>\n<span class=\"token comment\">#     return len(followers)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># for _ in range(int(input())):</span>\n<span class=\"token comment\">#     n = int(input())</span>\n<span class=\"token comment\">#     graph = {}</span>\n<span class=\"token comment\">#     for _ in range(n):</span>\n<span class=\"token comment\">#         a, b = input().split()</span>\n<span class=\"token comment\">#         if a in graph: graph[a].append(b)</span>\n<span class=\"token comment\">#         else: graph[a] = [b]</span>\n<span class=\"token comment\">#         if b in graph: graph[b].append(a)</span>\n<span class=\"token comment\">#         else: graph[b] = [a]</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#         print(countFollow(a))</span>\n\n\n<span class=\"token keyword\">import</span> sys\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\">find</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> node <span class=\"token operator\">==</span> parent<span class=\"token punctuation\">[</span>node<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> node\n\n    p <span class=\"token operator\">=</span> find<span class=\"token punctuation\">(</span>parent<span class=\"token punctuation\">[</span>node<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    parent<span class=\"token punctuation\">[</span>node<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> p\n    <span class=\"token keyword\">return</span> p\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">union</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    parent_a <span class=\"token operator\">=</span> find<span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n    parent_b <span class=\"token operator\">=</span> find<span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">if</span> parent_a <span class=\"token operator\">!=</span> parent_b<span class=\"token punctuation\">:</span>\n        parent<span class=\"token punctuation\">[</span>parent_b<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> parent_a\n        followers<span class=\"token punctuation\">[</span>parent_a<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> followers<span class=\"token punctuation\">[</span>parent_b<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><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><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    n <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    parent <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n    followers <span class=\"token operator\">=</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>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        a<span class=\"token punctuation\">,</span> b <span class=\"token operator\">=</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>\n\n        <span class=\"token keyword\">if</span> a <span class=\"token keyword\">not</span> <span class=\"token keyword\">in</span> parent<span class=\"token punctuation\">:</span>\n            parent<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> a\n            followers<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n        <span class=\"token keyword\">if</span> b <span class=\"token keyword\">not</span> <span class=\"token keyword\">in</span> parent<span class=\"token punctuation\">:</span>\n            parent<span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> b\n            followers<span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n\n        union<span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>followers<span class=\"token punctuation\">[</span>find<span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-4195 - Python","date":"February 05, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-4195-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-2749-Python/"},"frontmatter":{"title":"BOJ-2749 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-1850-Python/"},"frontmatter":{"title":"BOJ-1850 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}