Xi_kor
2021. 5. 5. 12:23
기본값은 100에서 + 혹은 -만 눌러서 나올 수 있는 길이로 정했습니다. 그 후에 0부터 10000전까지 확인하면서 제일 최소의 횟수를 갱신해주었습니다.
#include <iostream>
#include <algorithm>
using namespace std;
bool broken[15];
int possible(int c){
if(c==0){
if(broken[c]) return 0;
else return 1;
}
else{
int len=0;
while(c>0){
if(broken[c%10]) return 0;
c/=10;
len+=1;
}
return len;
}
}
int main(){
int ans;
cin>>ans;
int error;
cin>>error;
for(int i=0; i<error; i++){
int a;
cin>>a;
broken[a]=true;
}
int n=ans-100;
if(n<0) n=-n;
//int minimum=2147000000;
for(int i=0; i<=1000000; i++){
int c=i;
int len=possible(c);
if(len>0){
int left=abs(ans-c);
if(n>len+left) n=len+left;
}
}
cout<<n;
return 0;
}