[プログラマー]最大数のパイソン
2072 ワード
どうして毎回桁を切って比較できるのか...?悩んだあげく、他の人の解答を见るのをあきらめた.
見るからにでたらめだ...かっこいいです.コードは本当に驚くべきものです. mapを使用してlistの要素を文字列にマッピングし、list を返します.
各文字列は lambda x:x*3->numパラメータを3回繰り返します
なぜ x*3を選んだのか->numの買収値が1000以下であるため、3桁に調整して比較する.
9、991なら2回繰り返しても9991は前に並んでいます. 文字列を比較してソート
文字列比較はASCII値でソートされます.
666 101010222を最初の比較として
6=86,1=81,2=82なので1<2<6です. 降順で、逆=True ''.文字列 をjoin(num)でマージ intに変換してstrに変換
すべての値が0の場合(たとえば>「000」)に処理します.
見るからにでたらめだ...かっこいいです.コードは本当に驚くべきものです.
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key = lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
stringに変えて比較したいのですが...x*3でその問題を解決するなんて、天才だ.各文字列は
なぜ
9、991なら2回繰り返しても9991は前に並んでいます.
文字列比較はASCII値でソートされます.
666 101010222を最初の比較として
6=86,1=81,2=82なので1<2<6です.
すべての値が0の場合(たとえば>「000」)に処理します.
Reference
この問題について([プログラマー]最大数のパイソン), 我々は、より多くの情報をここで見つけました https://velog.io/@heyyyrin/프로그래머스-가장-큰-수-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol