728x90
https://www.acmicpc.net/problem/2529
2529번: 부등호
여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력
www.acmicpc.net
후.. 처음에는 아 이걸 어떻게 해;; 했었는데 그냥 백 트랙킹으로 순서가 다른 수열을 쭉 늘어놓고 부등호 비교 연산을 하면 된다.ㅋ
2번째 예제를 돌리면서 시간이 좀 걸리길래 시간초과인가 했는데 잘 됐다!^^
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int k;
char ch[10];
vector<string> v;
string s;
bool visit[10];
bool check(){
for(int i=0; i<k; i++){
if(ch[i] == '>' && s[i] < s[i+1]) return false;
if(ch[i] == '<' && s[i] > s[i+1]) return false;
}
return true;
}
void backtracking(int cnt){
if(cnt == k+1){
if(check()) v.push_back(s);
return;
}
for(int i=0; i<10; i++){
if(!visit[i]){
visit[i] = true;
s += to_string(i);
backtracking(cnt+1);
s = s.substr(0, s.size()-1);
visit[i] = false;
}
}
}
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> k;
for(int i=0; i<k; i++) cin >> ch[i];
backtracking(0);
sort(v.begin(), v.end());
cout << v[v.size()-1] << '\n' << v[0] << '\n';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 1747번: 소수&팰린드롬 (0) | 2022.07.25 |
---|---|
[백준/c++] 1946번: 신입 사원 (0) | 2022.07.25 |
[백준/c++] 1449번: 수리공 항승 (0) | 2022.07.25 |
[백준/c++] 1205번: 등수 구하기 (0) | 2022.07.24 |
[백준/c++] 7576번: 토마토 (0) | 2022.07.24 |