Dolphins의 HelloWorld

[백준]Baekjoon1107(Brute force) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon1107(Brute force)

돌핀's 2018. 9. 13. 09:34

문제 링크 : https://www.acmicpc.net/problem/1107


#include <iostream>
#include <algorithm>

using namespace std;

bool not_work[10];
int channel(int num) //버튼이 고장나지 않았다면 해당 채널의 자릿수 반환
{
	int len = 0;
	do {
		len++;
		if (not_work[num % 10]) //버튼이 고장나있다면 0 반환
			return 0;
		num /= 10;
	} while (num != 0);
	
	return len;
}
int main()
{
	int N, num; //틀고자하는 채널, 고장난 버튼의 수
	int tmp; //그냥 임시적으로 쓰는 변수
	scanf("%d %d", &N, &num);
	for (int i = 0; i < num; i++) {
		scanf("%d", &tmp);
		not_work[tmp] = true; //bool 형에서 고장난것을 true로 바꿈
	}
	int minimum = 1000000;
	for (int i = 0; i <= 1000000; i++) { //처음에 누를 수 있는 채널을 모두 조사
		if ((tmp = channel(i)) != 0) { //만약 버튼이 잘 눌려서 그 채널을 틀 수 있다면
			int result = tmp + abs(N - i); //해당 채널을 트는데 사용한 버튼의 수
			if (result < minimum)
				minimum = result; //가장 작은것을 저장
		}
	}
	minimum = min(minimum, abs(100 - N)); //기본 채널이 100이므로 여기서 +/-를
	//통해 누른 버튼의 수와 위의 절차를 거친 최솟값중 작은것을 가려낸 후 출력
	printf("%d\n", minimum);
}

'Algorithm > baekjoon문제풀이' 카테고리의 다른 글

[백준]Baekjoon10971(순열)  (0) 2018.09.15
[백준]Baekjoon10819(순열)  (0) 2018.09.15
[백준]Baekjoon1939(이진탐색)  (0) 2018.09.05
[백준]Baekjoon2110(이진탐색)  (0) 2018.09.04
[백준]Baekjoon2805(이진탐색)  (0) 2018.09.04
Comments