1436번: 영화감독 숌

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

www.acmicpc.net

 

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int end_num, n, count = 1;
	string str;

	cin >> n;
	if (n == 1) {
		cout << 666;
	}
	else {
		end_num = 1665;
		while (n != count) {
			end_num++;
			str = to_string(end_num);
			
			// find : 문자열을 찾은 위치를 반환. 못찾으면 npos를 반환.
			if (str.find("666") != string::npos) {
				count++;
			}
		}
		cout << end_num;
	}	

	return 0;
}

풀이

 숫자 666이 들어가면 종말의 숫자다. 이해를 하는데 너무 오래걸렸다. (개빡대가리..)  어쨌든, 예시를 들자면 다음의 숫자들과 같다.

666, 1666, 2666, 3666, 4666, 5666, 6665, 6666, 6667, 6668, 6669, 10666 ...

즉, 5666 => 6666이 => 7666이 아닌 6665부터의 숫자도 잘 세줘야 한다.(6 세개가 붙어있기 때문.) 

 

틀렸던 이유

 경계값 테스트를 제대로 안해서 문제가 생겼었다. 원래는 cout << end_num이 else바깥쪽에 있어서 값 1을 입력했을 때 문제가 생겼었다.