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;
}

결론

브루트 포스 다시말해 완전탐색 알고리즘을 사용한다. 가능한 모든 경우의 수를 탐색하면 되고 예외없이 정답만을 출력한다는 것이 큰 특징이다.

업데이트: