시작 수 666부터 1씩 더해가면서 검사한다.
숫자가 증가할 때마다 to_string(숫자) 함수로 문자열 변환을 해준다.
string 에서 substring 의 포함여부를 검색하는데 find() 함수를 썼다.
문자열“666”이 포함되면 0을 포함한 인덱스를 반환해준다.
포함되지 않으면, 엄청나게 큰 수를 반환한다.
이 때, -1 보다는 string::npos 를 써서 검사하자.
#include <bits/stdc++.h>
using namespace std;
int n;
string s;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
string target = "666";
int num = 665;
int count = 0;
while(++num){
s = to_string(num); // int to string
if(s.find(target) != string::npos) ++count; // 타겟이 존재한다면 카운팅한다.
if(count == n) break;
}
cout << num;
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
마인크래프트 백준 18111번 c++ (0) | 2022.02.14 |
---|---|
방 번호 백준 1475번 c++ (0) | 2022.02.14 |
랜선 자르기 백준 1652번 c++ (0) | 2022.02.14 |
카드 백준 11652번 c++ (0) | 2022.02.13 |
쇠막대기 백준 10799번 c++ (0) | 2022.02.13 |