[PRODRAMMERS]-最大数(ソート)



📃 大数

問題を解く


mapを使用して
  • int型のlistをstringに変換し、listに変換します.
  • 変換後のnumをsort()を使用してソートし、キー条件を満たします.Lambda x:x*3はnumパラメータごとの文字列が3回繰り返されることを示す.
    なぜ
  • x*3を選んだのですか?
  • numの買収値は1000以下であるため、3桁で比較する.
  • 文字列比較はASCII値に変換されてソートされる.したがって、666、101010、222の最初のインデックス値で比較する.
  • 6=86,1=81,2=82で6>2>1の順に大きくなります.
  • sort()の基本ソート基準は昇順である.reverse=Trueの前のsort結果値は10、2、6です.
  • を逆=Trueにより降順し、6、2、10を得ることができる.これはjoin(num)で文字列をマージすればいいです.
  • なぜ
  • intに変換してstrに変換したのですか?
  • のすべての値が0の場合(すなわち、処理「000」)はintに変換され、strに変換される.
  • intを使用して
  • 「000」を0に変換
  • コード#コード#

    
    def solution(numbers):
        answer = ''
        numbers = list(map(str,numbers))
        numbers.sort(key = lambda x :  x*3,reverse=True)
        answer = str(int(''.join(numbers)))
        return answer
    
    solution([6, 10, 2])