백준/완전 탐색

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

배발자 2022. 2. 14.

목차

    반응형

    완전 탐색을 통해 해결하면 되는 문제이다. 

     

    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;
    }

     

     

    1107번: 리모컨

    첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다.  둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼...

    www.acmicpc.net

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

    반응형

    '백준 > 완전 탐색' 카테고리의 다른 글

    [백준 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