{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-10775-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"a0fc673c-f5cd-5b58-a6cc-058de7bda4cf","excerpt":"G개의 게이트에 P개의 비행기가 순서대로 도착할 예정이다. 각 비행기는 1번부터 입력되는 gi번까지 도킹할 수 있을 때 최대한 많은 비행기가 도킹한 수를 출력하는 문제. 첫 번째 풀이는 그리디 방법을 이용하여 입력되는 gi부터 0까지 반복문을 이용하여 풀었으나 당연하게도 시간초과 결과를 받게 되었다. 입력되는 G와 P의 최대 수가 10의 5승이기 떄문. 두 번째 풀이는 유니온 파인드 방법을 이용하여 gi마다 루트 노드를 찾으며 해당 노드와 -1한 노드를 union한다. 위 연산을 반복하여 gi…","html":"<p>G개의 게이트에 P개의 비행기가 순서대로 도착할 예정이다. 각 비행기는 1번부터 입력되는 gi번까지 도킹할 수 있을 때 최대한 많은 비행기가 도킹한 수를 출력하는 문제. 첫 번째 풀이는 그리디 방법을 이용하여 입력되는 gi부터 0까지 반복문을 이용하여 풀었으나 당연하게도 시간초과 결과를 받게 되었다. 입력되는 G와 P의 최대 수가 10의 5승이기 떄문. 두 번째 풀이는 유니온 파인드 방법을 이용하여 gi마다 루트 노드를 찾으며 해당 노드와 -1한 노드를 union한다. 위 연산을 반복하여 gi의 루트 노드가 0일 때 반복문을 종료하여 풀었다. 유니온 파인드를 이런 방법으로도 응용할 수 있는 지 알게 되었다.</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\"># G = int(input())</span>\n<span class=\"token comment\"># P = int(input())</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># gates = [False for _ in range(G+1)]</span>\n<span class=\"token comment\"># for i in range(P):</span>\n<span class=\"token comment\">#     t = int(input())</span>\n<span class=\"token comment\">#     for j in range(t, 0, -1):</span>\n<span class=\"token comment\">#         if not gates[j]:</span>\n<span class=\"token comment\">#             gates[j] = True</span>\n<span class=\"token comment\">#             break</span>\n<span class=\"token comment\">#         elif j == 1:</span>\n<span class=\"token comment\">#             print(i)</span>\n<span class=\"token comment\">#             exit()</span>\n<span class=\"token comment\"># print(P)</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    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    pa <span class=\"token operator\">=</span> find<span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n    pb <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> pa <span class=\"token operator\">!=</span> pb<span class=\"token punctuation\">:</span>\n        parent<span class=\"token punctuation\">[</span>pa<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> pb\n\nG <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>\nP <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\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>G<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</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>P<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    t <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    pt <span class=\"token operator\">=</span> find<span class=\"token punctuation\">(</span>t<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> pt <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n        exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n    union<span class=\"token punctuation\">(</span>pt<span class=\"token punctuation\">,</span> pt<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>P<span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-10775 - Python","date":"February 07, 2021"}}},"pageContext":{"slug":"/Algorithm/BOJ-10775-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-1976-Python/"},"frontmatter":{"title":"BOJ-1976 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Gatsby/gatsby_starter_bee_seo/"},"frontmatter":{"title":"gatsby-starter-bee theme 네이버, 구글 검색 노출시키기","category":"Gatsby","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}