상세 컨텐츠

본문 제목

[백준] 1436번 영화감독 숌 - 결과 포함

개발 공부 (알고리즘)

by letprogramming 2021. 1. 18. 07:42

본문

반응형

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

 

1436번: 영화감독 숌

666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타

www.acmicpc.net

문제가 겉보기에는 쉬워보여서 처음에 시도했다가 두 번이나 실패를 받았다.

처음에는 단순하게 666부터 1000씩 곱하는 방법을 시도했다.

666 -> 1666 -> 2666 -> 3666 -> ...

 

그러나 중간에 맨 앞에 자리가 6이 되었을 때가 문제였다.

6066, 6166, ... 60660 이런 경우가 생기는 것이었다.

그래서 숫자를 하나씩 확인하는 방법을 생각했다.

숫자를 문자열로 바꾸어 6을 3개 이상 가지고 있다면 체크를 하는 것이다.

 

체크한 카운트를 세어서 N번째 숫자를 찾으려 했다.

 

그러나 다시 한 번 실패를 했다.

문제를 다시 꼼꼼히 읽어보니 '"666"이라는 숫자가 3개 이상 연속으로 들어가는 수'가 조건이었다.

내가 한 방식은 연속이 아닌 6이 3번 이상 들어간 모든 수를 체크한 것이었다.

 

그래서 문자열에서 "666"이라는 문자열을 찾는다면 체크하는 것으로 수정했다.

 

[전체 소스 코드]

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

bool is666(int n){
    string num = to_string(n);

    return num.find("666") != string::npos ? true : false;
}

int main()
{
    cin.tie(NULL);
    cin.sync_with_stdio(false);

    int N, n;
    int cnt = 0;

    cin >> N;

    n = 666;
    while (cnt < N)
    {
        if(is666(n)){
            cnt++;
        }
        n++;
    }

    cout << n - 1 << '\n';
}
반응형

관련글 더보기