{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-2263-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"f3c01247-669a-5c25-95bd-be0dadf66197","excerpt":"…","html":"<p>트리의 정점의 수와 중위 순회, 후위 순휘를 입력받은 후 해당 트리를 전위 순회하여 출력한 결과를 출력하는 문제. 후위 순회의 마지막을 기준으로 해당 노드를 출력 후, 중위 순회한 결과에서 해당 노드의 위치를 기준으로 왼쪽에 있는 노드를 후위 순회한 것 뒤에 위치한 후 해당 연산을 반복하면 전위 순회한 결과과 되는 것을 깨달은 후 새로운 리스트를 만들어서 재귀적으로 호출하여 풀었으나 메모리 초과 결과를 받게 되었다. 새로운 리스트를 계속해서 만들었기 때문이다. 두번째 풀이는 중위 순회, 후위 순회 각각 시작점과 끝점을 함수의 매개변수로 사용하여 재귀적으로 호출하였다. 후위 순회의 끝점을 출력한 후 <code class=\"language-text\">후위 시작점 + 해당 노드의 중위 순회 결과의 위치 - 중위 순회 시작점</code>을 계산 및 이용하여 해당 노드의 후위 순회 결과의 좌측, 우측을 나누는데 사용하였다.</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\"># sys.setrecursionlimit(10**9)</span>\n<span class=\"token comment\"># input = sys.stdin.readline</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def getPre(i, l):</span>\n<span class=\"token comment\">#     if i == 0:</span>\n<span class=\"token comment\">#         return</span>\n<span class=\"token comment\">#     num = l.pop()</span>\n<span class=\"token comment\">#     print(num, end=\" \")</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     index = inor.index(num)</span>\n<span class=\"token comment\">#     visit[index] = True</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     next_l = []</span>\n<span class=\"token comment\">#     for node in range(index, n):</span>\n<span class=\"token comment\">#         if not visit[node]:</span>\n<span class=\"token comment\">#             next_l.append(inor[node])</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     for node in range(0, index):</span>\n<span class=\"token comment\">#         if not visit[node]:</span>\n<span class=\"token comment\">#             next_l.append(inor[node])</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     getPre(i-1, next_l)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># n = int(input())</span>\n<span class=\"token comment\"># inor = list(map(int, input().split()))</span>\n<span class=\"token comment\"># postor = list(map(int, input().split()))</span>\n<span class=\"token comment\"># visit = [False for _ in range(n)]</span>\n<span class=\"token comment\"># getPre(n, postor)</span>\n\n\n<span class=\"token keyword\">import</span> sys\nsys<span class=\"token punctuation\">.</span>setrecursionlimit<span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token operator\">**</span><span class=\"token number\">9</span><span class=\"token punctuation\">)</span>\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\">getPre</span><span class=\"token punctuation\">(</span>in_start<span class=\"token punctuation\">,</span> in_end<span class=\"token punctuation\">,</span> post_start<span class=\"token punctuation\">,</span> post_end<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> in_start <span class=\"token operator\">></span> in_end <span class=\"token keyword\">or</span> post_start <span class=\"token operator\">></span> post_end<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span>\n\n    now <span class=\"token operator\">=</span> postor<span class=\"token punctuation\">[</span>post_end<span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>now<span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\" \"</span><span class=\"token punctuation\">)</span>\n    index <span class=\"token operator\">=</span> p<span class=\"token punctuation\">[</span>now<span class=\"token punctuation\">]</span>\n    left <span class=\"token operator\">=</span> post_start <span class=\"token operator\">+</span> index <span class=\"token operator\">-</span> in_start\n    getPre<span class=\"token punctuation\">(</span>in_start<span class=\"token punctuation\">,</span> index<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> post_start<span class=\"token punctuation\">,</span> left <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    getPre<span class=\"token punctuation\">(</span>index<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> in_end<span class=\"token punctuation\">,</span> left<span class=\"token punctuation\">,</span> post_end<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\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>\ninor <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>\npostor <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>\np <span class=\"token operator\">=</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>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    p<span class=\"token punctuation\">[</span>inor<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> i\ngetPre<span class=\"token punctuation\">(</span><span class=\"token number\">0</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 number\">0</span><span class=\"token punctuation\">,</span> n<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-2263 - Python","date":"December 03, 2020"}}},"pageContext":{"slug":"/Algorithm/BOJ-2263-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-5639-Python/"},"frontmatter":{"title":"BOJ-5639 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-1068-Python/"},"frontmatter":{"title":"BOJ-1068 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}