반응형
● 문제 접근 과정
- 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 이다. 따라서, 숌은 첫 번째 영화의 제목은 "세상의 종말 666", 두 번째 영화의 제목은 "세상의 종말 1666"와 같이 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 수) 와 같다.
- count 변수는 666이 들어간 숫자들의 카운트를 세줄 변수이다.
- target은 찾을 숫자이며, string으로 형식을 바꿔주어 find를 통하여 666이 들어간 수를 찾는다.
- 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
반응형