Dolphins의 HelloWorld
[백준]Baekjoon1107(Brute force) 본문
문제 링크 : 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