반응형

● 문제 접근 과정

    1. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 이다. 따라서, 숌은 첫 번째 영화의 제목은 "세상의 종말 666", 두 번째 영화의 제목은 "세상의 종말 1666"와 같이 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 수) 와 같다.
    2. count 변수는 666이 들어간 숫자들의 카운트를 세줄 변수이다.
    3. target은 찾을 숫자이며, string으로 형식을 바꿔주어 find를 통하여 666이 들어간 수를 찾는다.
    4. count 변수를 올려주며 num과 같을 때 해당 숫자를 출력하여 주며 프로그램이 끝난다.

● 구현

#include <iostream>
#include <string>

using namespace std;

int main() {
  int num;
  cin >> num;

  int count = 0;    // '666'이 연속으로 등장한 횟수
  int target = 666; // 탐색할 숫자
  while (true) {
    string str = to_string(target); // 숫자를 문자열로 변환하여 패턴 확인
    if (str.find("666") != string::npos) { // '666'이 포함되어 있는지 확인
      count++;
    }
    if (count == num) { // 원하는 순서에 도달했을 때
      cout << target << endl;
      break;
    }
    target++; // 다음 숫자로 이동
  }

  return 0;
}

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

 

반응형

+ Recent posts