공부/백준(C++) - 2022~

백준 1436번: 영화감독 숌 [C++]

상연 2022. 1. 25. 20:29

목차

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

코드

#include <iostream>
using namespace std;

bool judge_666(int n)
{
	string s = to_string(n);
	for(int i=0; i < s.length() - 2; i++)
	{
		string temp = "";
		for(int j=i; j<i+3; j++)
		{
			temp += s[j];
		}
		if(temp == "666")
		{
			return true;
		}
	}
	return false;
}

int main()
{
	int n, cnt = 0, now = 666;
	cin >> n;
	
	while(true)
	{
		if(judge_666(now))
		{
			cnt ++;
		}
		if(cnt == n)
		{
			cout << now;
			break;
		}
		now++;
	}
	
}

설명

그냥 대충 빠르게 풀려고 666부터 시작해서 모든 수를 string으로 바꾸고 substring 연산을 해서 666이 있으면 count를 하는것으로 했는데 이렇게 하면 좀 느리다.

좀 빠르게 하려면 1000씩 나눠가면서 확인하는법도 있다.