[Python LV.2] 가장 큰 수

문제 풀이

입출력 예시를 보면 가장 왼쪽의 자릿수가 클수록 앞으로 오는 것을 알 수 있습니다.

  • 6, 10, 2에서는 6>2>10 이므로 6210
  • 3, 30, 34, 5, 9에서는 9>5>34>3>30인데 34가 왜 3보다 먼저 나오느냐? 에서 해당 문제의 정답이 나오게 됩니다.
  • 34와 3은 자릿수가 다르기에 비교할 수 없다고 생각하겠지만 같은 숫자로 같은 자리수로 만들어주면 답을 구할 수 있습니다. 34와 3의 경우에는 34 vs 33이 되겠네요. 30 vs 3의 경우는 30 vs 33이므로 반복해서 비교하며 정렬하면 됩니다.
  • 따라서 자릿수가 다를 경우에도 해당 숫자를 반복해서 더 큰 수로 만든 다음 정렬해주면 풀리게 됩니다.
  • 다만 numbers의 원소 전부가 0인 경우도 있기 때문에 정렬 후 가장 큰 자리수가 0인 경우에는 0을 출력하게 만들면 됩니다.
from itertools import permutations

def solution(numbers):
    answer = ''
    
    numbers = list(map(str, numbers))
    numbers.sort(key = lambda x: x*3, reverse = True)
    answer = ''.join(numbers)
    
    if answer[0] == '0':
        return "0"
    
    return answer
반응형