⭐️ DFS
백트래킹을 사용한다고 시도했으나 결국 엄청난 다중 for문을 사용하게 되어 시간초과 발생..
⭐️ 백트래킹
문자열 크기 -2
자리까지만 갱신 가능 ➡️ 더 이상 갱신할 뒷 자리가 없기 때문swap
함수 사용하면 간편하게 바꿀 수 있음#include<iostream>
#include <algorithm>
#include <string>
using namespace std;
int mx,c;
string s;
void dfs(int idx, int cnt) {
if(cnt==c) {
mx=max(stoi(s),mx);
return;
}
for(int i=idx;i<s.size()-1;i++) {
for(int j=i+1;j<s.size();j++) {
swap(s[i],s[j]);
dfs(i,cnt+1);
swap(s[i],s[j]);
}
}
}
int main()
{
int t;
cin >> t;
for(int i=1;i<=t;i++) {
cin >> s >> c;
mx=-1;
if(c>s.size()) c=s.size();
dfs(0,0);
cout << '#'<<i<<" " << mx<< '\n';
}
return 0;
}