Algorithm

LeetCode) Largest Number

주코식딩 2022. 5. 26. 22:43

주어진 배열에 있는 숫자를 문자열로 붙여서 가장 큰 수를 만들어야 하는 문제다.

 

 

정렬방식 중 비교구문만 바꿔주면 된다. merge sort코드를 구글링해와서 비교구문만 바꿔주었다.

3 과 30 을 비교하는 방법:  330, 303 비교 

class Solution():
    def largestNumber(self, nums: List[int]) -> str:
        def merge_sort(arr):
            if len(arr) < 2:
                return arr

            mid = len(arr) // 2
            low_arr = merge_sort(arr[:mid])
            high_arr = merge_sort(arr[mid:])

            merged_arr = []
            l = h = 0
            while l < len(low_arr) and h < len(high_arr):
                if int(str(low_arr[l]) + str(high_arr[h])) >= int(str(high_arr[h]) + str(low_arr[l])):
                    merged_arr.append(low_arr[l])
                    l += 1
                else:
                    merged_arr.append(high_arr[h])
                    h += 1
            merged_arr += low_arr[l:]
            merged_arr += high_arr[h:]
            return merged_arr

        return str(int("".join(map(str,merge_sort(nums)))))

'Algorithm' 카테고리의 다른 글

프로그래머스) 보석쇼핑  (0) 2022.05.31
백준) 랜선 자르기  (0) 2022.05.30
프로그래머스) 파일명 정렬  (0) 2022.05.23
python) 정렬에 lambda함수 활용하기  (0) 2022.05.23
프로그래머스) 괄호 변환  (0) 2022.05.22