水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

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)