{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/프로그래머스-큰수만들기-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"959f3d44-b67d-5e3e-9ff5-966f21d779d4","excerpt":"문자열로 이루어진 정수가 주어진다. 해당 정수의 형태를 유지하여 k개의 숫자를 빼어 만들 수 있는 가장 큰 수를 출력하는 문제. 첫 번째 풀이는 백트래킹 방법을 이용하여 모든 경우의 수를 set 자료형에 저장하여, 제일 큰 값을 출력하여 풀었지만 시간초과 결과를 받게 되었다. 두 번째 풀이는 스택을 이용한 풀이로, 스택의 마지막 값들과 현재 반복중인 값을 비교하여 k를 감소, 스택에서 제외한 후 현재 반복중이였던 값을 스택에 추가한다. 앞에서부터 큰 수들이 들어감으로써 k가…","html":"<p>문자열로 이루어진 정수가 주어진다. 해당 정수의 형태를 유지하여 k개의 숫자를 빼어 만들 수 있는 가장 큰 수를 출력하는 문제. 첫 번째 풀이는 백트래킹 방법을 이용하여 모든 경우의 수를 set 자료형에 저장하여, 제일 큰 값을 출력하여 풀었지만 시간초과 결과를 받게 되었다. 두 번째 풀이는 스택을 이용한 풀이로, 스택의 마지막 값들과 현재 반복중인 값을 비교하여 k를 감소, 스택에서 제외한 후 현재 반복중이였던 값을 스택에 추가한다. 앞에서부터 큰 수들이 들어감으로써 k가 0이 되지 않았을 시 감소한 k만큼 뒤에서 잘라주어 반환하여 풀었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># def bt(n, depth, k, visit, answer, answers):</span>\n<span class=\"token comment\">#     if depth == k:</span>\n<span class=\"token comment\">#         t = \"\".join(answer)</span>\n<span class=\"token comment\">#         answers.add(int(t))</span>\n<span class=\"token comment\">#         return</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     for i in range(n):</span>\n<span class=\"token comment\">#         if not visit[i]:</span>\n<span class=\"token comment\">#             t = answer[i]</span>\n<span class=\"token comment\">#             answer[i] = \"\"</span>\n<span class=\"token comment\">#             visit[i] = True</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#             bt(n, depth+1, k, visit, answer, answers)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#             answer[i] = t</span>\n<span class=\"token comment\">#             visit[i] = False</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def solution(number, k):</span>\n<span class=\"token comment\">#     n = len(number)</span>\n<span class=\"token comment\">#     number = list(number)</span>\n<span class=\"token comment\">#     visit = [False for _ in range(n)]</span>\n<span class=\"token comment\">#     answers = set()</span>\n<span class=\"token comment\">#     bt(n, 0, k, visit, number, answers)</span>\n<span class=\"token comment\">#     return str(max(answers))</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># print(solution(n, k))</span>\n\n\nnn <span class=\"token operator\">=</span> <span class=\"token string\">\"4177252841\"</span>\nk <span class=\"token operator\">=</span> <span class=\"token number\">4</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>number<span class=\"token punctuation\">,</span> k<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    stack <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">for</span> n <span class=\"token keyword\">in</span> number<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">while</span> stack <span class=\"token keyword\">and</span> stack<span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> n <span class=\"token keyword\">and</span> k <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n            k <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n            stack<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        stack<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">if</span> k <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span> stack <span class=\"token operator\">=</span> stack<span class=\"token punctuation\">[</span><span class=\"token punctuation\">:</span><span class=\"token operator\">-</span>k<span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">return</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>stack<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solution<span class=\"token punctuation\">(</span>nn<span class=\"token punctuation\">,</span> k<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"프로그래머스-큰수만들기 - Python","date":"February 27, 2021"}}},"pageContext":{"slug":"/Algorithm/프로그래머스-큰수만들기-Python/","previous":{"fields":{"slug":"/Algorithm/프로그래머스-올바른괄호-Python/"},"frontmatter":{"title":"프로그래머스-올바른괄호 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-4796-Python/"},"frontmatter":{"title":"BOJ-4796 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}