https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
문제 자체 좋았음.
완전탐색 + DFS조합.
이문제 못풀엇음.`
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int ans, change;
string s;
void dfs(int index, int current)
{
if (current == change)
{
ans = max(ans, stoi(s));
return;
}
for (int i = index; i < s.size() - 1; i++)
{
for (int j = i + 1; j < s.size(); j++)
{
swap(s[i], s[j]);
dfs(i, current + 1);
swap(s[i], s[j]);
}
}
}
int main(void)
{
s = "123";
change = 3;
ans = 0;
if (change > s.size())
change = s.size();
dfs(0, 0);
return 0;
}
테스트 케이스 2개가 안맞는데, 정확한 이유는 모르겠다.
dfs하면서
1] 완전탐색 하는 경우에 위와같은 이중포문 형태(중요)
2] 만약 원하는 답이 나왔을 경우 답 교체