๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[C++/BOJ] 1107 : ๋ฆฌ๋ชจ์ปจ (์™„์ „ํƒ์ƒ‰)

https://www.acmicpc.net/problem/1107

 

๋ฌธ์ œ

์ˆ˜๋นˆ์ด๋Š” TV๋ฅผ ๋ณด๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ์ฑ„๋„์„ ๋Œ๋ฆฌ๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ๋ฒ„ํŠผ์„ ๋„ˆ๋ฌด ์„ธ๊ฒŒ ๋ˆ„๋ฅด๋Š” ๋ฐ”๋žŒ์—, ์ผ๋ถ€ ์ˆซ์ž ๋ฒ„ํŠผ์ด ๊ณ ์žฅ๋‚ฌ๋‹ค.

๋ฆฌ๋ชจ์ปจ์—๋Š” ๋ฒ„ํŠผ์ด 0๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ˆซ์ž, +์™€ -๊ฐ€ ์žˆ๋‹ค. +๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ ๋ณด๊ณ ์žˆ๋Š” ์ฑ„๋„์—์„œ +1๋œ ์ฑ„๋„๋กœ ์ด๋™ํ•˜๊ณ , -๋ฅผ ๋ˆ„๋ฅด๋ฉด -1๋œ ์ฑ„๋„๋กœ ์ด๋™ํ•œ๋‹ค. ์ฑ„๋„ 0์—์„œ -๋ฅผ ๋ˆ„๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์ฑ„๋„์ด ๋ณ€ํ•˜์ง€ ์•Š๊ณ , ์ฑ„๋„์€ ๋ฌดํ•œ๋Œ€ ๋งŒํผ ์žˆ๋‹ค.

์ˆ˜๋นˆ์ด๊ฐ€ ์ง€๊ธˆ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ฑ„๋„์€ N์ด๋‹ค. ์–ด๋–ค ๋ฒ„ํŠผ์ด ๊ณ ์žฅ๋‚ฌ๋Š”์ง€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฑ„๋„ N์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฒ„ํŠผ์„ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผํ•˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 

์ˆ˜๋นˆ์ด๊ฐ€ ์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š” ์ฑ„๋„์€ 100๋ฒˆ์ด๋‹ค.

์ž…๋ ฅ

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

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฑ„๋„ N์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„ํŠผ์„ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


๋ฐฑ์ค€ ๊ณจ๋“œ 5 ๋ฌธ์ œ.

 

์ฒ˜์Œ์—๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆ˜๋ถ€ํ„ฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ, ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ˆ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด

๋ฐ˜๋ณต๋ฌธ์„ ๋๋‚ด๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ

์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์˜ˆ์™ธ๋„ ๋งŽ์„ ๊ฒƒ ๊ฐ™์•˜๊ณ  N๋ณด๋‹ค ์ž‘์€ ์ชฝ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  <-> ํฐ ์ชฝ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

๊ฒฐ๊ตญ ๋˜‘๊ฐ™์•„์„œ ์™„ํƒ์œผ๋กœ ํ’€์—ˆ๋‹ค..

 

์ฃผ์˜์‚ฌํ•ญ์€ ๋ฒ”์œ„๊ฐ€ 500,000์ด์ง€๋งŒ ์ตœ๋Œ€ ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋˜์–ด๋„ ๊ทธ๊ฒƒ๋ณด๋‹ค ํฐ ์ˆ˜๋ถ€ํ„ฐ ๋ฆฌ๋ชจ์ปจ ์กฐ์ž‘์„ ์‹œ์ž‘ํ•ด์•ผํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ

๋ฒ”์œ„๋ฅผ 1,000,000๊นŒ์ง€ ์ฐพ์•„์ฃผ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค

 

Xucking Brute Force!!

 

 

๋‚˜์˜ ํ’€์ด

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int n;
int m;
vector<char> nobtn;

bool check(int num){
    string s = to_string(num);
    for (int i = 0; i < s.size(); ++i){
        if(find(nobtn.begin(),nobtn.end(),s[i])!=nobtn.end()){
            return false;
        }
    }
    return true;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n >> m;
    char a;
    for (int i = 0; i < m; ++i){
        cin >> a;
        nobtn.push_back(a);
    }

    if(n==100) {
        cout << 0;
        return 0;
    }
    int minimum = abs(n-100);

    string N = to_string(n);

    for (int i = 0; i <= 1000000; ++i){
        if(check(i)){
            // ์ˆซ์ž ๊ธธ์ด(์ˆซ์ž๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜) + ์ฐจ์ด(+/-๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜)๋ฅผ ๋”ํ•ด์ค€๋‹ค
            int now = to_string(i).length() + abs(i - n);
            if(minimum > now) minimum = now;
        }
    }
    cout << minimum;
}