백준/완전 탐색

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

반응형

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

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

댓글