본문 바로가기

백준 문제 풀이/c언어

백준 1436번 "영화감독 숌" --- c

728x90

안녕하세요! 오늘은 백준 1436번 "영화감독 숌" 문제를 풀어보겠습니다.

 

1436번: 영화감독 숌

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

www.acmicpc.net

문제 설명

  • 666이 들어가는 수를 종말의 숫자라고 한다.
  • 입력으로 N이 주어졌을 때, 숌이 N번째로 찍은 종말의 숫자를 출력하는 프로그램을 작성하시오.

입력

  • 숫자 N이 주어진다. (1 ≤ N ≤ 10,000)

출력

  • N번째 종말의 숫자를 출력한다.

풀이 방법

N은 10,000보다 작거나 같은 자연수이며, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 수)와 같습니다.

아래는 이 문제를 해결할 수 있는 C언어 코드입니다:

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);

    int count=0; // 종말의 숫자 개수
    int num=666; // 현재 숫자 (666부터 시작해도 무관)
    while(1){
        // num에 666이 포함된다면 count++
        int consecutive_6=0;
        int cur=num;
        while(cur>0){
            int digit = cur%10;
            if(digit==6)
                consecutive_6++;
            else
                consecutive_6=0; //다시 0으로 초기화

            if(consecutive_6==3){
                count++;
                break;
            }
            cur = cur/10;
        }

        // N번째로 작은 종말 숫자였다면 break, 아니라면 계속
        if(count==N)
            break;
        num++;
    }
    printf("%d
", num);
}

이 코드는 입력으로 받은 N에 해당하는 N번째 영화의 제목에 들어갈 수를 출력합니다. 종말의 수인 666부터 시작하여, 666, 1666, 2666, ... 순서로 수를 증가시키면서 N번째 종말의 수를 찾습니다. 종말의 수인지 확인하기 위해 각 숫자의 자릿수를 검사하고, 6이 연속으로 3개 이상 나타나면 count를 증가시킵니다. N번째 종말의 수를 찾으면 해당 숫자를 출력합니다.

이렇게 간단한 방법으로 문제를 해결할 수 있습니다.

728x90