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 |
댓글