반응형
https://www.acmicpc.net/problem/16943
문제 해결 알고리즘
숫자를 순열로 완전탐색해주고 B보다 작고 맨 앞 숫자가 0이 아닌 수중에 가장 큰 값을 출력해준다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
int cnt = 0;
int result = -1;
int A, B; cin >> A >> B;
vector<int> v;
while(A != 0){
v.push_back(A % 10);
A/=10;
cnt++;
}
sort(v.begin(), v.end());
do{
int temp_result = 0;
if(v[cnt-1] == 0) continue;
for(int i=0;i<cnt;i++){
temp_result += v[i] * pow(10, i);
}
if(temp_result < B) result = max(result, temp_result);
}while(next_permutation(v.begin(), v.end()));
cout << result;
}
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[BFS] BOJ 1743 음식물 피하기 (0) | 2022.02.26 |
---|---|
[BFS] BOJ 1303 전쟁 - 전투 (0) | 2022.02.23 |
[수학, 정수론] BOJ 9693 시파르 (0) | 2022.02.17 |
[문자열] BOJ 1213 팰린드롬 만들기 (0) | 2022.02.14 |
[브루트 포스] BOJ 1198 삼각형으로 자르기 (0) | 2022.02.11 |