본문 바로가기
Programming Solve/BOJ

BOJ 1436 영화감독 숌 / C++

by msm1029 2021. 8. 27.
반응형

문제 링크 : https://www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

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

www.acmicpc.net

문제 풀이

문제 설명이 잘 이해가 되지 않아 다른 블로그를 통해 이해했다.

일단 종말의 숫자란 6이 최소 3개 이상 들어간 숫자이고 N 번째 영화의 제목은

종말의 숫자이면서 N번째로 작은 숫자이다.

예를 들면 666, 1666, 2666, 3666, 4666, 5666, 6660, 6661, 6662

이런식으로 진행되는데 5666 다음에 6666 이 되지 않는 이유는 6660 이 더 작은

종말의 숫자이기 때문이다. 따라서 1씩 더해가며 '666'이 있는지 찾는다.

또한, 연속으로 들어가야 하기 때문에 6066과 같은 경우는 포함되지 않는다.

 

소스 코드

#include <iostream>
using namespace std;

bool isTripleSix(int num){
    int cnt = 0; //연속된 6이 있는지 확인하는 변수. cnt가 3일 경우 return true
    bool cont = false; //6이 연속되었는지 확인하는 bool 변수

    while(num > 0){
        if(cnt == 3) return true;
        int tmp;
        tmp = num % 10;

        if(tmp == 6) cont = true;
        else cont = false;

        if(tmp == 6 && cont){
            cnt++;
        }
        else cnt = 0;
        num /= 10;
    }
    if(cnt == 3) return true;
    else return false;
}

int main(){
    int n, i=665; //666이 첫 연속된 수이므로 665부터 시작한다.
    int cnt = 0;
    cin >> n;

    while(true){
        if(isTripleSix(i)) cnt++;

        if(cnt == n){
            cout << i;
            break;
        }
        i++;
    }
}
반응형