문제
https://www.acmicpc.net/problem/1436
1436번: 영화감독 숌
666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워
www.acmicpc.net
풀이
문제 설명을 처음 읽었을 때는 너무 간단해보여서 쉬울 줄 알았던 문제이다.
그러나, 실제로 코드로 구현을 하려고 하니 생각보다 어려워서 시간이 좀 걸렸다.
666을 포함한 수를 작은 순서대로 나열하여 N번째 수를 출력하는 문제이다.
666을 포함한다는 것을 코드로 어떻게 표현할지 고민했다.
예를 들어, 1666, 6665, 123666, 436667과 같은 수는 모두 666을 포함하고 있다.
나는 string 함수 중에서 find 함수를 사용하였다.
find 함수는 인자로 받은 문자열이 기존 문자열에 존재하면, 인자로 받은 문자열의 시작 index를 return하고, 존재하지 않으면, string::npos라는 쓰레기 값을 반환한다.
(존재하지 않으면 -1을 반환하는 것이 아니라, string::npos라는 쓰레기 값을 return한다는 것을 알아두자)
코드
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#include <sstream>
#include <cstdio>
#include <cmath>
#include <climits>
using namespace std;
using ll = long long;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n; cin >> n;
int i = 0, cnt = 0;
while (1) {
string s = to_string(i);
int idx = s.find("666");
if (idx != string::npos) cnt++;
if (cnt == n) break;
i++;
}
printf("%d", i);
return 0;
}
문제
https://www.acmicpc.net/problem/1436
1436번: 영화감독 숌
666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워
www.acmicpc.net
풀이
문제 설명을 처음 읽었을 때는 너무 간단해보여서 쉬울 줄 알았던 문제이다.
그러나, 실제로 코드로 구현을 하려고 하니 생각보다 어려워서 시간이 좀 걸렸다.
666을 포함한 수를 작은 순서대로 나열하여 N번째 수를 출력하는 문제이다.
666을 포함한다는 것을 코드로 어떻게 표현할지 고민했다.
예를 들어, 1666, 6665, 123666, 436667과 같은 수는 모두 666을 포함하고 있다.
나는 string 함수 중에서 find 함수를 사용하였다.
find 함수는 인자로 받은 문자열이 기존 문자열에 존재하면, 인자로 받은 문자열의 시작 index를 return하고, 존재하지 않으면, string::npos라는 쓰레기 값을 반환한다.
(존재하지 않으면 -1을 반환하는 것이 아니라, string::npos라는 쓰레기 값을 return한다는 것을 알아두자)
코드
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#include <sstream>
#include <cstdio>
#include <cmath>
#include <climits>
using namespace std;
using ll = long long;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n; cin >> n;
int i = 0, cnt = 0;
while (1) {
string s = to_string(i);
int idx = s.find("666");
if (idx != string::npos) cnt++;
if (cnt == n) break;
i++;
}
printf("%d", i);
return 0;
}