Study/Baekjoon

[백준/C++] 1107 리모컨

에린_1 2024. 4. 21. 18:47
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