-
#include<cstdio> #include<algorithm> #include<iostream> #include<string> using namespace std; int n; int c; int b[10]; int broken; bool checking(string s){ for(int i = 0; i < s.length(); i++){ for(int j = 0; j < broken; j++){ if(s[i] == to_string(b[j])[0]){ return false; } } } return true; } int length(int c){ if(c / 100000 != 0) return 6; if(c / 10000 != 0) return 5; if(c / 1000 != 0) return 4; if(c / 100 != 0) return 3; if(c / 10 != 0) return 2; if(c / 1 != 0) return 1; else return 0; } int abs(int a, int b){ if(a - b < 0) return b - a; else return a -b ; } int min(int a, int b){ if(a > b) return b; return a; } int main(){ scanf("%d", &n); string s = to_string(n); scanf("%d", &broken); if(n == 100){ for (int i = 0; i < broken; i++) { cin >> b[i]; } cout<<0<<endl; } else { for (int i = 0; i < broken; i++) { cin >> b[i]; } int max = 100000000; for (int i = 0; i <= 1000000; i++) { int p = abs(100,n); if (checking(to_string(i)) == true) { int c = length(i); c += abs(i, n); p = min(c, abs(n - 100)); } if (max > p) max = p; } cout << max <<endl; } return 0; }
0을 고려한 결과...
#include<cstdio> #include<algorithm> #include<iostream> #include<string> using namespace std; int n; int c; int b[10]; int broken; bool checking(string s){ for(int i = 0; i < s.length(); i++){ for(int j = 0; j < broken; j++){ if(s[i] == to_string(b[j])[0]){ return false; } } } return true; } int length(int c){ if(c / 100000 != 0) return 6; if(c / 10000 != 0) return 5; if(c / 1000 != 0) return 4; if(c / 100 != 0) return 3; if(c / 10 != 0) return 2; if(c / 1 != 0) return 1; if(c == 0) return 1; else return 0; } int abs(int a, int b){ if(a - b < 0) return b - a; else return a -b ; } int min(int a, int b){ if(a > b) return b; return a; } int main(){ scanf("%d", &n); string s = to_string(n); scanf("%d", &broken); if(n == 100){ for (int i = 0; i < broken; i++) { cin >> b[i]; } cout<<0<<endl; } else { for (int i = 0; i < broken; i++) { cin >> b[i]; } int max = 100000000; for (int i = 0; i <= 1000000; i++) { int p = abs(100,n); if (checking(to_string(i)) == true) { int c = length(i); c += abs(i, n); p = min(c, abs(n - 100)); } if (max > p) max = p; } cout << max <<endl; } return 0; }
0을 고려하지않은 결과