본문 바로가기

알고리즘

[c++ | 백준] 1436번 영화감독

c++ 문제 풀이

 

 

 

 

 

 


 

 

[백준 1436번 영화감독  문제]

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

 

 

 

 


 

 

 

전체 풀이 코드

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    int n, result = 665;
    string temp;

    cin >> n;
    while (true)
    {
        result++;
        temp = to_string(result);
        if (temp.find("666") != -1)
        {
            if (--n == 0) break;
        }
    }

    cout << result;

    return 0;
}

 

 

 

풀이 설명

 

1. 브루트포스 알고리즘

 

이 문제는 브루트포스 알고리즘을 이용하여 풀이하면 되는 문제입니다.

 

브루트포스 알고리즘이 뭘까요?

 

이름은 정말 거창해 보이지만 사실 정말 간단한 알고리즘 입니다. 브루트포스 알고리즘을  직역하면, 무식한 힘을 갖는 알고리즘이란 뜻으로 가능한 경우의 수를 모두 탐색하면서 결과를 도출하는 방법입니다.

 

 

2. 매개변수

int n, result = 665; // 666보다 하나 작은 665를 기본값으로 사용
string temp;

 

 

3. while문

cin >> n;
while (true)
{
    result++;
    temp = to_string(result);
    if (temp.find("666") != -1)
    {
        if (--n == 0) break;
    }
}

 

먼저 n을 입력 받은 후 while문을 돌아줍니다.

result값을 늘리고 난 후 string으로 변환을 해주고 이 stirng값에 666이 있는지를 검사합니다.

있다면 다음 영화의 번호를 찾은 것이기 때문에 n을 -1해주고, n번째 영화의 번호를 찾은 것이라면 n이 0일 것이기 때문에 검사한 후 맞은 경우에만 break를 해 while문을 탈출합니다.

 

 

4. 출력

cout << result;

 

그 다음 result를 출력하면 문제가 완료됩니다.

 

 


 

 

이렇게 백준 1436번 문제를 브루트포스 알고리즘으로 풀이해보았습니다.

궁금한점 있으시면 댓글 남겨주세요!