[レベル2]最大数
1044 ワード
🛠 質問する
https://programmers.co.kr/learn/courses/30/lessons/42746
👩🏻💻 解決策
numbersの要素は1000以下なので、3桁のペア(x*3)で比較すれば問題解決
文字列比較はアスキー値で置換ソートされるので、大数から降順にソートされます
intに変換してstrを再strするのは、すべての値が0の場合に処理するためです(000)
ソースコード
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key = lambda x:x*3, reverse=True)
answer = str(int(''.join(numbers)))
return answer
💡 他人の解答
functools.cmp to key(func):旧式比較関数をキー関数に変換する
import functools
def comparator(a,b):
t1 = a+b
t2 = b+a
return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1 // t2가 크다면 -1 // 같으면 0
def solution(numbers):
n = [str(x) for x in numbers]
n = sorted(n, key=functools.cmp_to_key(comparator),reverse=True)
answer = str(int(''.join(n)))
return answer
Reference
この問題について([レベル2]最大数), 我々は、より多くの情報をここで見つけました https://velog.io/@hyunnn/Level2-가장-큰-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol