๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 1107๋ฒˆ - ๋ฆฌ๋ชจ์ปจ

by dkswnkk 2021. 10. 27.
 

1107๋ฒˆ: ๋ฆฌ๋ชจ์ปจ

์ฒซ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ฑ„๋„ N (0 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.  ๋‘˜์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์˜ ๊ฐœ์ˆ˜ M (0 ≤ M ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์…‹์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ

www.acmicpc.net

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int broken[11]={1,1,1,1,1,1,1,1,1,1};

bool check(int i){
    string s = to_string(i);
    for(int i=0; i<s.length(); i++){
        if(!broken[s[i]-'0']) return false; //๋ฒ„ํŠผ์ด ๊ณ ์žฅ๋‚ฌ์œผ๋ฉด false
    }
    return true;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int N,M; cin>>N>>M;

    for(int i=0; i<M; i++){     //๊ณ ์žฅ ๋‚œ ๋ฒ„ํŠผ ์ž…๋ ฅ
        int broken_num; cin>>broken_num;
        broken[broken_num]=0;
    }

    int ans=abs(N-100); //100๋ฒˆ ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ๋ฒˆํ˜ธ๊นŒ์ง€ ++ ํ˜น์€ --๋งŒ ํ•ด์„œ ๊ฐ€๋Š” ๊ฒฝ์šฐ,

    for(int i=0; i<=1000000; i++){
        if(check(i)){   //์ž…๋ ฅ ๊ฐ€๋Šฅํ• ๋•Œ
            int click=abs(N-i)+(int)to_string(i).length();  //๋ฒˆํ˜ธ ์ž๋ฆฟ์ˆ˜๋งŒํผ  ์ž…๋ ฅ + ๊ทธ ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ++ ํ˜น์€ -- ๊ฐฏ์ˆ˜ ์ฒดํฌ
            ans=min(ans,click);
        }
    }

    cout<<ans;
}

๋Œ“๊ธ€