본문 바로가기
backjoon/브루트포스

백준 1436번 - 영화감독 숌 c언어

by 정구지개발자 2023. 1. 8.
728x90

https://www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

1. 문제 이해부터 잘해야된다. 666이 포함된 숫자들 중에서 N번째로 작은 숫자를 출력하라는 말이다.

5번째 4666

6번째 5666

7번째 6660

8번쨰 6661

여기서 생각해보면 7번째에 만약 5666 -> 6666 이된다면 6660보다 더 큰 숫자가 된다

666이 연속해서 나오는 숫자들 중에서 작은순서대로 가야하는데  5666 다음으로 작은숫자가 6666이전에 6660이 존재한다는 말이다

여기까지 이해한다면 그다음은 쉽게 생각해볼수 있다.

13번쨰 6666

14번째 6667

17번째  7666

               .

               .

               .

 

500번쨰 166699

 

2. 위의 이해를 바탕으로 브루트 포스 전략을 이용해서 숫자를 하나하나 비교해보면서 답을 찾으면된다.

나의답안)

#include <stdio.h>

int	main()
{
	int	death_count = 0;
	int	N;
	int	check = 0;
	int	count = 0;
	int	num;

	scanf("%d", &N);

	num = 666;
	while (1)
	{
		count = 0;
		check = num;
		while (check > 0)
		{
			if (check % 10 == 6)
				count++;
			else
				count = 0;
			if (count == 3)
			{
				death_count++;
				break ;
			}
			check = check / 10;
		}
		if (death_count == N)
			break;
		num++;
	}
	printf("%d\n", num);
}
728x90

'backjoon > 브루트포스' 카테고리의 다른 글

백준 7568 - 덩치 c언어  (2) 2023.01.05
백준 2231 c언어 -분해합  (0) 2023.01.05
백준 2798 블랙잭 (C언어)  (0) 2023.01.01

댓글