[programmers]-最大数
5081 ワード
1. Problem 📃
📚 ソース-プログラマ
問題の説明
0または正の整数を指定すると、最大の整数を見つけます.
例えば、与えられた整数が[6,10,2]である場合、最大数が6210である[610261010621026102106]を作成することができる.
パラメータに指定された配列番号が0または正の整数の場合、作成可能な最大番号を文字列に変換して戻すソリューション関数を作成します.
せいげんじょうけん
numbersreturn[6, 10, 2]"6210"[3, 30, 34, 5, 9]"9534330"
2. Logic 👨🏫
シーケンスコード
1.順番に表示できる全ての状況の数を求める.この場合、tuple形式に戻るので、リスト形式に変換する必要があります.
2.joinを使用して文字列をマージするには、データ型が文字列の場合を前提とします.したがって、入力したデータ型を文字列に変換し、すべての場合に順番に表示できる数字を表し、joinにマージすればよい.
3.ソートで最大数を返します.
しかし利用順で解くとタイムアウトで解決できない.
理由を調べてみると、ソートなど、時間の複雑さはO(N!)そのためタイムアウトが発生しました.
そこで,時間的複雑度の高いハッシュ技術を用いて解いた.
ハッシュによって解析されたコード
1.整数型データ型のリストを文字列リストに変換します.
2.ランダによる比較ソート.
3.並べ替えられたリストをまとめて返します.
3. Code 💻
1.シーケンスを使用して解いた私のコード😁
from itertools import permutations # 순열
def solution(numbers):
for i in range(len(numbers)):
numbers[i] = str(numbers[i])
perList = list(map(''.join, permutations(numbers, len(numbers))))
return sorted(perList)[-1]
2.他人のコードを参考にする😁
def solution(num):
num = list(map(str, num))
num.sort(key = lambda x : x*3, reverse=True)
return str(int(''.join(num)))
lambda x: x*3
はnumパラメータの各文字列を3回繰り返すことを示す.
numの買収値は1000以下なので、3桁に調整して比較します.
ここでlambda x: x*3
を示すのは、[21,24,24,27,27]というリストがある場合、
[「2121121」、「242424」、「272727」、「222」に変換]ここでソートすると、文字列比較はASCII値に変換されて比較されます.
したがって、ASCII値は、「27272727」、「242424」、「222」および「21212121」の順に並べられる.
最終的には「『27』『24』『2』『21』」と並ぶ
最後の行がintに変換されたのは,「0000」などの数で記述されたコードである.
Reference
この問題について([programmers]-最大数), 我々は、より多くの情報をここで見つけました
https://velog.io/@odh0112/Programmers-가장-큰-수
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
1.シーケンスを使用して解いた私のコード😁
from itertools import permutations # 순열
def solution(numbers):
for i in range(len(numbers)):
numbers[i] = str(numbers[i])
perList = list(map(''.join, permutations(numbers, len(numbers))))
return sorted(perList)[-1]
2.他人のコードを参考にする😁
def solution(num):
num = list(map(str, num))
num.sort(key = lambda x : x*3, reverse=True)
return str(int(''.join(num)))
lambda x: x*3
はnumパラメータの各文字列を3回繰り返すことを示す.numの買収値は1000以下なので、3桁に調整して比較します.
ここで
lambda x: x*3
を示すのは、[21,24,24,27,27]というリストがある場合、[「2121121」、「242424」、「272727」、「222」に変換]ここでソートすると、文字列比較はASCII値に変換されて比較されます.
したがって、ASCII値は、「27272727」、「242424」、「222」および「21212121」の順に並べられる.
最終的には「『27』『24』『2』『21』」と並ぶ
最後の行がintに変換されたのは,「0000」などの数で記述されたコードである.
Reference
この問題について([programmers]-最大数), 我々は、より多くの情報をここで見つけました https://velog.io/@odh0112/Programmers-가장-큰-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol