{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-1976-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"ccc2e36c-2e86-5a91-b07f-0b1d20cc8ba8","excerpt":"n개의 도시마다 다른 도시들로 갈 수 있는지 입력받은 후, m개의 도시 루트를 입력받는다. 해당 루트대로 이동 할 수 있으면 YES, 아닐 시 NO를 출력하는 문제. 첫 번째 풀이는 플로이드 와샬 방법을 이용하여 완전 탐색하여 풀었다. 이번 풀이는 유니온 파인드 방법을 이용하여 풀었으며 입력되는 루트의 부모 루트가 모두 동일 시 YES를, 아닐 시 NO를 출력하여 풀었다.","html":"<p>n개의 도시마다 다른 도시들로 갈 수 있는지 입력받은 후, m개의 도시 루트를 입력받는다. 해당 루트대로 이동 할 수 있으면 YES, 아닐 시 NO를 출력하는 문제. 첫 번째 풀이는 플로이드 와샬 방법을 이용하여 완전 탐색하여 풀었다. 이번 풀이는 유니온 파인드 방법을 이용하여 풀었으며 입력되는 루트의 부모 루트가 모두 동일 시 YES를, 아닐 시 NO를 출력하여 풀었다.</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 solve():</span>\n<span class=\"token comment\">#     for i in range(m - 1):</span>\n<span class=\"token comment\">#         now = dist[i]</span>\n<span class=\"token comment\">#         next = dist[i + 1]</span>\n<span class=\"token comment\">#         if not graph[now][next]:</span>\n<span class=\"token comment\">#             return False</span>\n<span class=\"token comment\">#     return True</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 = [list(map(int, input().split())) for _ in range(n)]</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># for k in range(n):</span>\n<span class=\"token comment\">#     graph[k][k] = 1</span>\n<span class=\"token comment\">#     for i in range(n):</span>\n<span class=\"token comment\">#         for j in range(n):</span>\n<span class=\"token comment\">#                 if graph[i][k] and graph[k][j]:</span>\n<span class=\"token comment\">#                     graph[i][j] = 1</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># dist = list(map(lambda x: int(x)-1, input().split()))</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># print(\"YES\" if solve() else \"NO\")</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\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>\nparent <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>i <span class=\"token keyword\">for</span> i <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\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>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    linked <span class=\"token operator\">=</span> <span class=\"token builtin\">list</span><span class=\"token punctuation\">(</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><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>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> linked<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            union<span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">)</span>\n\nplan <span class=\"token operator\">=</span> <span class=\"token builtin\">list</span><span class=\"token punctuation\">(</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><span class=\"token punctuation\">)</span>\nans <span class=\"token operator\">=</span> <span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>find<span class=\"token punctuation\">(</span>parent<span class=\"token punctuation\">[</span>i<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> plan<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\">\"YES\"</span> <span class=\"token keyword\">if</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>ans<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span> <span class=\"token keyword\">else</span> <span class=\"token string\">\"NO\"</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-1976 - Python","date":"February 07, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-1976-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-1717-Python/"},"frontmatter":{"title":"BOJ-1717 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-10775-Python/"},"frontmatter":{"title":"BOJ-10775 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}