시작 수 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

+ Recent posts