* 재귀로 완탐구현
기본꼴 : go(index, 임시저장결과값)
1. 종료조건
2. 직접해보면서 일반화하라.
마지막숫자 == num[idx-1]
비교할숫자 == i
비교할op == a[idx-1] 임을 알 수 있다.
* string 정렬시주의
"23"
"123" 비교시
앞부터 하나씩 비교 하므로, 23이 더 크게됨에 주의.
#include<bits/stdc++.h>
using namespace std;
int n, temp, check[14];
vector<string> ret;
char a[14];
bool good(char a, char b, char op) {
if (op == '<' && a < b) return true;
if (op == '>' && a > b) return true;
return false;
}
void go(int idx, string num) {
if (idx == n+1) {
ret.push_back(num);
return;
}
for (int i = 0; i <= 9; ++i)
{
if (check[i]) continue;
//최초 or good(저장된마지막숫자,new숫자,op)
//매개변수 => 저장용, 확인용 으로 사용하라.
if (idx == 0 || good(num[idx-1],i+'0', a[idx-1])) {
check[i] = 1;
go(idx + 1, num + to_string(i));
check[i] = 0; //원복
}
}
return;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i]; //등호 저장
}
go(0, "");
sort(ret.begin(), ret.end());
cout << ret[ret.size()-1] << "\n";
cout << ret[0] << "\n";
return 0;
}
'Algorithm > boj' 카테고리의 다른 글
백준 9046 복호화 //map을 정렬하는방법, vector로 옮겨라, 문자열은 map필요X 배열만으로됨 (0) | 2023.07.10 |
---|---|
백준 9934 완전이진트리 // 탐색결과를 트리로원복 (0) | 2023.06.28 |
백준 1987 알파벳 // 노드가 각자의visit을 가져야한다면 원복! , dfs visit[now] [next]둘중 하나만 해라 (1) | 2023.06.13 |
백준 3197 백조의 호수 // bfs멈춰는 tempQ, 1차원에서 논리짜라, next경우의수를 나눠서 처리하라, pair Q 클리어하는법 (1) | 2023.06.13 |
백준 14497 주난의 난// bfs멈춰는 큐2개로 해결, 어려우면 1차원에서 논리를 짜라 (0) | 2023.06.12 |