[C++] 문자열에서 특정 문자(열)이 포함되어있는지 확인하고 싶을 때

뚱이·2023년 9월 4일
0

문자열에서 특정 문자(열)이 포함되어있는지 확인하고 싶을 때

<string> 헤더의 find() 함수를 사용하면 된다.

find(string str, int pos);

기준 문자열의 처음부터 탐색하고 싶으면 str 만 인자로 넘겨주면 되고,
특정 위치부터 탐색하고 싶으면 index 값을 두 번째 인자로 넘겨주면 된다.

찾고 싶은 문자(열) str 을 찾으면, 해당 문자(열)이 위치한 주솟값을 반환해준다.

여기서 주의할 점은 문자열에 str이 포함되어 있지 않을 때인데,
-1을 반환하는 게 아니라, string::npos를 반환한다.

[ex] BOJ 1436

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int getNumber(int N) {
    int cnt = 0, i = 665;
    string s;
    while (cnt != N) {
        i++;
        s = to_string(i);
        if (s.find("666") != string::npos) {
            cnt++;
        }   
    }
    return i;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    // 입력
    int N;
    cin >> N;
    
    // 연산 및 출력
    cout << getNumber(N);
    
    return 0;
}

0개의 댓글