ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리모컨
    백준알고리즘 2019. 7. 21. 19:39
    #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을 고려하지않은 결과

    '백준알고리즘' 카테고리의 다른 글

    일곱난쟁이  (0) 2019.07.23
    잉카달력  (0) 2019.07.21
    퇴사  (0) 2019.07.21
    테트로미노  (0) 2019.07.21
    안전영역  (0) 2019.07.20

    댓글

Designed by Tistory.