블로그 언저리인 무언가
[백준/BOJ] 2529 부등호 본문
728x90
문제 : 2529 부등호
부등호 기호가 나열되어있는 배열이 주어질 때,
서로 다른 한 자릿수 숫자를 넣어 만족하는 가장 큰 수와
가장 작은 수를 찾아 출력하는 문제이다.
백트래킹 기법을 활용해서 모든 경우의 수를 확인해서 비교하면 된다.
Code
#include <bits/stdc++.h>
#define ll long long
#define INF 1e15+7
using namespace std;
ll N, visited[10], mn=INF, mx=-1;
vector<char> arr;
void backtrack(ll now, ll depth){
if (depth==N+1){
mx=max(mx,now);
mn=min(mn,now);
return ;
}
for (int i=0;i<=9;i++){
if (visited[i]==0){
if (depth==0 || (arr[depth-1]=='>' && now%10>i) || (arr[depth-1]=='<' && now%10<i)){
visited[i]=1;
now=now*10+i;
backtrack(now, depth+1);
now/=10;
visited[i]=0;
}
}
}
}
int main(){
cin >> N;
for (int i=0;i<N;i++){
char a;
cin >> a;
arr.push_back(a);
}
backtrack(0,0);
cout << mx << "\n";
if (pow(10,N)>mn)
cout << "0";
cout << mn;
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 1138 한 줄로 서기 (0) | 2020.11.23 |
---|---|
[백준/BOJ] 18115 카드 놓기 (1) | 2020.11.20 |
[백준/BOJ] 2758 로또 (0) | 2020.11.17 |
[백준/BOJ] 5972 택배 배송 (0) | 2020.11.16 |
[백준/BOJ] 20114 미아 노트 (0) | 2020.11.13 |
Comments