데브코스 TIL/자료구조, 알고리즘

Step 3: 정렬(Sort) 대표 문제 풀이: 가장 큰 수

예니ㅣ 2023. 10. 19. 15:06

강의

정렬을 사용할 때에는 제한 조건과 시간 복잡도에 주의해야 합니다.

 

 

Step 3-3: 풀어서 내 것으로 만들자! 가장 큰 수

⭐ 직관적 풀이 : 새로운 정렬 기준을 생성하여 푸는 방법!

from functools import cmp_to_key

def custom(a, b):
    if a + b > b + a:
        return -1
    elif a + b < b + a:
        return 1
    else:
        return 0

def solution(numbers):
    numbers = list(map(str, numbers))
    sort_numbers = sorted(numbers,
                          key = cmp_to_key(custom))
    
    if len(sort_numbers) == sort_numbers.count("0"):
        sort_numbers = ["0"]
            
    ans = "".join(sort_numbers)
            
    return ans

⭐ 힌트 풀이 : numbers의 원소의 길이가 4자리수 이하인 것을 이용하는 방법!

def solution(numbers):
	numbers = [str(x) for x in numbers]
    numbers.sort(key = lambda x: (x*4)[:4], reverse = True)
    
    if numbers[0] == 0:
    	return = "0"
    
    return "".join(numbers)