[Programmers 42746]最大数(Python)
4169 ワード
質問する
https://programmers.co.kr/learn/courses/30/lessons/42746
これは,与えられた整数を最大数に組み合わせる問題である.
今は2級しか調整していません.私は調整しました.やばい
問題を解く
[答えが間違っている]
ランダで数字の最初の桁数を比較できると思います.
では、
9, 8, 7, 12 ...
はこのように整理されるはずです.欲しい結果が出たが、間違った答えだった.
numbers = list(map(str, numbers))
numbers = (sorted(numbers, key=lambda x: x[0], reverse=True))
[例外]20, 203
の正解は20320
だったが、20203
が現れた.最初の位置だけを比較したので、こんな結果になりました.
[間違った答え2]
では最後の位置も比較してみましょうか?考えて、ほほほ、
以上の例外は解決できるが、もちろん間違っている.
[例外]
4223, 4991
のように、1位、最下位は比較できるが、中間の位置は比較できないため、誤った答えが出た.[正解]
だから長い間悩んで、やっと答えを見つけた.
儒林のブログ。では、非数値文字列を1番目のビットとして比較し、文字長に基づいて比較する.
6, 13, 3, 1
という名前の数字については、各文字にランダムに5回の値を乗算してキーとしてソートします.‣
66666, 1313131313, 33333, 11111
(第一位比較)👉🏻 (文字列の長さ).
コード#コード#
def solution(numbers):
answer = ''
numbers = list(map(str, numbers))
numbers = (sorted(numbers, key=lambda x: x * 5, reverse=True))
for n in numbers:
answer += str(n)
return str(int(answer))
Reference
この問題について([Programmers 42746]最大数(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@uoayop/Programmers-42746-가장-큰-수Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol