1436 - 영화감독 숌
1436 문제 링크
접근법
현재 숫자를 tmp에 저장하고 일의 자리부터 확인한다. 10으로 나눈 나머지를 확인하고 6이면 count를 올리고 6이아니면 6으로 나누고 소수점을 버리고 다시 10으로 나눈 나머지를 확인하는 식으로 반복한다.
그 과정에서 중간에 6이 3번 이상 반복되지 않으면 count를 0으로 만들어 준다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N;
int count = 0;
int count_666 = 0;
cin >> N;
int tmp = 665;
int number = 665;
while(1)
{
while(1)
{
if(tmp % 10 == 6)
{
count ++;
}else
{
if(count > 2)
{
}
else
{
count = 0;
}
}
if(tmp < 10)
{
break;
}
tmp = (int)tmp/10;
}
if(count > 2)
{
count_666++;
}
count = 0;
if(count_666 == N)
{
cout << number;
return 0;
}
number++;
tmp = number;
}
return 0;
}
결론
브루트 포스 다시말해 완전탐색 알고리즘을 사용한다. 가능한 모든 경우의 수를 탐색하면 되고 예외없이 정답만을 출력한다는 것이 큰 특징이다.