{"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":"53adbfd6-c984-5b6d-ae14-be010ae1a6bd","excerpt":"0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 구하는 문제. 첫 번째 풀이는 백트래킹 방법을 이용하여 모든 경우의 수를 한 배열에 저장하여 해당 수 중 제일 큰 수를 출력하도록 풀었으나, 입력될 수 있는 수가 최대 100,000개임으로 시간초과 결과를 받게 되었다. 그리디 방법을 이용할려 했으나, 문자열을 기준으로 정렬시에 30과 3의 정렬에서 차질이 생겨 고민 중, 정렬 기준을 문자열화 한 것의 3을 곱한 풀이를 보았다. 303030과 333을 정렬하여 33…","html":"<p>0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 구하는 문제. 첫 번째 풀이는 백트래킹 방법을 이용하여 모든 경우의 수를 한 배열에 저장하여 해당 수 중 제일 큰 수를 출력하도록 풀었으나, 입력될 수 있는 수가 최대 100,000개임으로 시간초과 결과를 받게 되었다. 그리디 방법을 이용할려 했으나, 문자열을 기준으로 정렬시에 30과 3의 정렬에서 차질이 생겨 고민 중, 정렬 기준을 문자열화 한 것의 3을 곱한 풀이를 보았다. 303030과 333을 정렬하여 333이 더욱 높게 판단되게 하여 풀었다.</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\n<span class=\"token comment\"># def bt(depth, now, length, numbers, visit, answers):</span>\n<span class=\"token comment\">#     if depth == length:</span>\n<span class=\"token comment\">#         answers.append(now)</span>\n<span class=\"token comment\">#         return</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     for i in range(length):</span>\n<span class=\"token comment\">#         if not visit[i]:</span>\n<span class=\"token comment\">#             visit[i] = True</span>\n<span class=\"token comment\">#             bt(depth+1, now+numbers[i], length, numbers, visit, answers)</span>\n<span class=\"token comment\">#             visit[i] = False</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># def solution(numbers):</span>\n<span class=\"token comment\">#     n = len(numbers)</span>\n<span class=\"token comment\">#     numbers = list(map(str, numbers))</span>\n<span class=\"token comment\">#     visit = [False for _ in range(n)]</span>\n<span class=\"token comment\">#     answers = []</span>\n<span class=\"token comment\">#     bt(0, \"\", n, numbers, visit, answers)</span>\n<span class=\"token comment\">#     answers = list(map(int, answers))</span>\n<span class=\"token comment\">#     print(answers)</span>\n<span class=\"token comment\">#     return str(max(answers))</span>\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>numbers<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    numbers <span class=\"token operator\">=</span> <span class=\"token builtin\">sorted</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">map</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">str</span><span class=\"token punctuation\">,</span> numbers<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> key<span class=\"token operator\">=</span><span class=\"token keyword\">lambda</span> x<span class=\"token punctuation\">:</span> x<span class=\"token operator\">*</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> reverse<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>numbers<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\nl <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">30</span><span class=\"token punctuation\">,</span> <span class=\"token number\">34</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">9</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>solution<span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"프로그래머스-가장큰수 - Python","date":"February 21, 2021"}}},"pageContext":{"slug":"/Algorithm/프로그래머스-가장큰수-Python/","previous":{"fields":{"slug":"/Algorithm/프로그래머스-멀쩡한사각형-Python/"},"frontmatter":{"title":"프로그래머스-멀쩡한사각형 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-17396-Python/"},"frontmatter":{"title":"BOJ-17396 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}