반응형
완전 탐색을 통해 해결하면 되는 문제이다.
1. 0부터 1000000 까지 모든 채널을 확인한다.
2. 각 채널에서 표시되는 숫자값을 하나하나 확인하면서 고장난 것이 하나라도 있으면 반복문을 종료한다.
3. 고장난 것이 없다면 "현재 채널의 길이 + ((절댓값)목표 채널 - 현재 채널) " 최솟값을 구한다.
4. 반복문이 종료된 후 저장된 최솟값과 현재 수빈이가 있는 100 채널에서 + 또는 - 로 이동할 수 있는 최솟값과 비교해서 작은값을 출력하도록 한다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int inf = 1000001;
int ch;
int n;
bool check[10];
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> ch >> n;
for (int i = 0; i < n; i++) {
int a; cin >>a ;
check[a] = true;
}
int min_num = inf;
int cmp = abs(ch - 100);
for (int i = 0; i < inf; i++) {
string s = to_string(i);
int j = s.size() - 1;
for (j; j >= 0; j--) {
if (check[s[j] - '0'])break;
}
int len = s.size();
if (j == -1) {
min_num = min(min_num, len + abs(ch-i) );
}
}
if (cmp < min_num)cout << cmp;
else cout << min_num;
}
반응형
'백준 > 완전 탐색' 카테고리의 다른 글
[백준 14888번 / C++] 연산자 끼워넣기 (0) | 2022.03.17 |
---|---|
[백준 2529번 / C++] 부등호 (0) | 2022.02.19 |
[백준 14502번 / C++] 연구소 (0) | 2022.01.28 |
[백준 14620번 / C++] 꽃길 (0) | 2022.01.25 |
[백준 1189번 / C++] 컴백홈 (0) | 2022.01.25 |
댓글