코딩테스트/백준

[Baekjoon(백준)][1436번] 영화감독 숌(C++)

유니얼 2024. 1. 31. 22:31
728x90

안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "영화감독 숌" 문제를 해결하는 방법에 대해 설명하려고 합니다. 이 문제에서는 특정 패턴(666이 연속으로 들어가는)을 가진 숫자를 찾는 것입니다 문제를 해결하는 과정과 코드를 자세히 알아보겠습니다.

문제링크:

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

Question_1
Question_2

문제 개요

"영화감독 숌" 문제에서는 특정 패턴(666이 연속으로 들어가는)을 가진 숫자를 찾는 것입니다. N번째로 작은 '종말의 수'를 찾아야 합니다. 예를 들어, 첫 번째 종말의 수는 666, 두 번째는 1666입니다.

해결 방법

문제를 해결하기 위해, 666부터 시작하여 각 숫자에 666이 포함되어 있는지 확인하고, N번째로 해당 패턴을 만족하는 숫자를 찾아야 합니다.

코드 구현

#include <iostream>
#include <vector>
#include <string>

using namespace std;

// 숫자에 666이 연속으로 들어가는지 확인하는 함수
bool go(int s) {
    string d = to_string(s);
    for (int i = 2; i < d.size(); i++) {
        if (d[i - 2] == '6' && d[i - 1] == '6' && d[i] == '6') {
            return true;
        }
    }
    return false;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie();
    cout.tie();

    int n = 0;
    cin >> n;

    int start = 666;
    vector<string> strs;
    while (strs.size() < n) {
        if (go(start)) {
            strs.push_back(to_string(start));
        }
        start++;
    }
    cout << strs[n - 1] << "\n";
}

코드 설명

이 코드는 '666'이 들어간 숫자를 순차적으로 찾아가는 방식을 사용합니다. go 함수는 주어진 숫자에 '666'이 연속으로 들어가는지 확인합니다. 만약 조건을 만족하면 해당 숫자를 strs 벡터에 추가합니다. 이 과정을 N번째 종말의 수를 찾을 때까지 반복합니다.

결론

"영화감독 숌" 문제는 문자열 처리와 간단한 반복문을 사용하여 해결할 수 있습니다. 특정 패턴을 만족하는 숫자를 찾는 것이 핵심이며, 이를 위해 숫자를 문자열로 변환하여 패턴을 검사하는 방식을 사용합니다.

반응형