解説
入れ替えといわれるとswapを思い出すだろう。
ただswapは整数型の桁には使えないので、文字列でできないか考える。
ここで、答えとなる数字と元の数字の桁は変わらないということが言える。
つまり、辞書順比較による事故(10<100<11みたいな)が起こらない。
よって、事前にstring型としていい感じにswapをし、辞書順で遅かったらそれを答えの候補にするといいう感じでできる。
C++での解答例
#include <bits/stdc++.h>
using namespace std;
int main(){
string n;cin>>n;
string ans=n;
for(int i=0;i<n.size();i++)
for(int j=i+1;j<n.size();j++){
string t=n;
swap(t[i],t[j]);
ans=max(ans,t);
}
cout<<ans<<endl;
}