名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

No.39 桁の数字を入れ替え

回答

#56811 No.39 桁の数字を入れ替え - yukicoder

入れ替えのパターンを全部試せば良い.
文字列として保持しておき,入れ替えて毎回整数型に変換,最大値かどうかを判定する,という操作を繰り返す.
こういう文字列と整数を行ったり来たりする問題は,個人的にPythonで書くのが一番楽だと思った….(C++とかでかくと複雑になりそう)
特にこの部分.

        t = int(s[:i]+s[j]+s[i+1:j]+s[i]+s[j+1:])

これはi番目とj番目を入れ替えた文字列を作っているところだが,これ他の言語で書いたら結構冗長になりそうな雰囲気がある….substring地獄とかになるのかな… あまり想像したくないのですが.

以下回答したコード.
もう一つ注意として,初期値として入力された文字列を数値として代入しておく必要あり.(並び替えていない状態のものが最大の場合を考慮するため)

s = input()
res = int(s)
for i in range(len(s)):
    for j in range(i+1, len(s)):
        t = int(s[:i]+s[j]+s[i+1:j]+s[i]+s[j+1:])
        res = max(res, t)
print(res)