728x90
1107 리모컨
https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
int n,btn_num, ans;
bool crash[11];
string temp = "";
bool check(int n)
{
string str_n = to_string(n);
for (int i = 0; i < str_n.length(); ++i)
{
if (crash[str_n[i] - '0'] == true)
return false;
}
return true;
}
int main()
{
ios::sync_with_stdio(NULL);
cin.tie(NULL);
cout.tie(NULL);
cin >> n >> btn_num;
int ch = 100;
for (int i = 0; i < btn_num; ++i)
{
int tmp;
cin >> tmp;
crash[tmp] = true;
}
int cnt = abs(ch - n);
for (int i = 0; i < 1000000; ++i)
{
if (check(i) == true)
{
int se_cnt = abs(n - i) + to_string(i).length();
cnt = min(cnt, se_cnt);
}
}
cout << cnt;
}
- 브루트 포스를 사용해서 풀었다.
- for문의 경우 1000000번의 반복문을 도는데, 그 이유는 100에서 부터 시작하는 채널을 +를 사용하면 500000까지 499000 갈 수 있다. 반대로 오는경우 500000에서 까지 가려면 999900에서 -해야 하기 때문에 그렇게 정했다.
728x90
'Study > Baekjoon' 카테고리의 다른 글
[백준/C++] 4375 1 (0) | 2024.04.27 |
---|---|
[백준/C++] 1406 에디터 (1) | 2024.04.12 |
[백준/C++] 11728 배열 합치기 (0) | 2024.04.08 |
[백준/C++] 1269 대칭 차집합 (0) | 2024.04.06 |
[백준/C++] 14502 연구소 (0) | 2024.04.01 |