
예제 입력 1
2
< >
예제 출력 1
897
021
예제 입력 2
9
< < < > > > < <
예제 출력 2
9567843012
1023765489
bool check(char big_small,int f_num,int sec_num)\
처음에는 해당 부분에서 bool check 하는 부분이 어떻게 체크를 해야하는지 몰랐음
그래서 보니까 bool로 return을 해야하는것으로 bool로 바꾸고 진짜 이 기호가 이 숫자가 들어가도 된다 안된다를 true false로 한다는 것에서 신선하게 이해개 되었음
results.push_back(num);
처음에 전체 코드가 완성되면 해당 답에 push를 하여 답을 넣어서 출력하는 식이었음
코드의 핵심 알고리즘
if(visit[i]) continue;
else if(depth==0)
{
visit[i]=true;
check_num(depth+1,num+to_string(i));
visit[i]=false;
}
else
{
int change_int = num[depth-1]-'0';
if(check(equality[depth-1],change_int,i))
{
visit[i]=true;
check_num(depth+1,num+to_string(i));
visit[i]=false;
}
}
이부분에서
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int input_value;
char equality[10];
bool visit[10];
vector<string> results;
bool check(char big_small,int f_num,int sec_num)
{
if(big_small=='<')
{
return f_num < sec_num;
}
if(big_small=='>')
{
return f_num > sec_num;
}
return false;
}
void check_num(int depth, string num)
{
if(depth==input_value+1)
{
results.push_back(num);
return;
}
for(int i = 0;i<=9;i++)
{
if(visit[i]) continue;
else if(depth==0)
{
visit[i]=true;
check_num(depth+1,num+to_string(i));
visit[i]=false;
}
else
{
int change_int = num[depth-1]-'0';
if(check(equality[depth-1],change_int,i))
{
visit[i]=true;
check_num(depth+1,num+to_string(i));
visit[i]=false;
}
}
}
}
int main()
{
cin>>input_value;
for(int i=0 ;i<input_value;i++)
{
cin>>equality[i];
}
check_num(0,"");
sort(results.begin(),results.end());
cout<<results.back()<<"\n";
cout<<results.front()<<"\n";
}