https://www.acmicpc.net/problem/1107
1. 초기값 잘 설정하는법
ret=abs(100-n)
초기값을 100번에서 노가다하는 경우로 설정 => 이것보다 작은게 있을때만 정답이 갱신됨
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
int n,m,dead[10],ret1,ret2;
//번호n을 누를수 잇는지 체크
int check(int n) {
string s = to_string(n);
for (int i = 0; i < s.size(); ++i) {
if (dead[s[i] - '0']) return 0;
}
return 1;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 0; i < m; ++i) {
int temp;
cin >> temp;
dead[temp] = 1;
}
if (n == 100) {
cout << 0;
return 0;
}
ret1 = abs(100 - n); //초기값: 100에서 노가다하는 경우!
for (int i = 0; i <= 500000 * 2; ++i) {
if (!check(i)) continue;
//2. 누르고 노가다
int a = abs(n - i);
int b = to_string(i).size();
//if (ret2 > a) cout << a << "\n";
ret1 = min(ret1, a+b);
}
string s = to_string(n);
cout << ret1;
return 0;
}
'Algorithm > 완전탐색' 카테고리의 다른 글
백준 12919 A와B2 c++ // 완탐, 거꾸로탐색 (0) | 2023.12.28 |
---|---|
프로그래머스 모의고사 c++ // 완전탐색 (0) | 2023.10.12 |