티스토리 뷰

알고리즘/BOJ

[BOJ 1107] 리모컨

히더 2018. 7. 23. 14:01

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


1. 완전탐색을 통해 모든 케이스를 체크한다.


#include <iostream>

#include <algorithm>

using namespace std;


#define MAX_ERR 11


int i, j, N, ERR, count1, count2;

int a[MAX_ERR], result;


void input()

{

int aa; cin >> N; cin >> ERR;

for (i = 1;i <= ERR;i++) { cin >> aa; a[aa] = 1; }

}


int zari(int n)

{

int zari = 0;

do {

n = n / 10;

zari++;

} while (n > 0);


return zari;

}


bool check(int n)

{

if (n == 0)

{

if (a[0] == 1) return false;

}

else {

while (n > 0)

{

if (a[n % 10] == 1) return false;

n = n / 10;

}

}

return true;

}


void cal()

{

result = 0; count1 = 0; count2 = 0;

int tmp = 0;


int n_up = N; int n_dn = N;

while (!check(n_up) && (n_up) != 1000001)

{

count1++; n_up++;

}

if(n_up!=1000001)result = zari(n_up) + count1;

else result = 999999;


while (!check(n_dn)&&(n_dn)!=-1)

{

count2++; n_dn--;

}

if(n_dn!=-1) tmp = zari(n_dn) + count2;

else tmp = 999999;


result = min(result, tmp);

result = min(result, abs(N - 100));

}


int main()

{

input(); cal();

cout << result << endl;

}


'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ 1912] 연속합  (0) 2018.07.23
[BOJ 2579] 계단 오르기  (0) 2018.07.23
[BOJ 1389] 케빈 베이컨의 6단계 법칙  (0) 2018.07.21
[BOJ 14888] 연산자 끼워넣기  (0) 2018.07.15
[BOJ 14889] 스타트와 링크  (0) 2018.07.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함