'll Hacker

BOJ 1543 문서검색 문제 본문

Dev

BOJ 1543 문서검색 문제

씨이오가 되자 2024. 9. 27. 02:31
Contents
728x90

문제 이해


아이디어

string 클래스를 사용

처음엔 search문자열을 찾으면 "0"으로 대체할려고 하거나 지울려고 하는데, out of range가 계속 나와서

find 반환값으로 자리에서 많이 벗어나면 그 반환값의 위치에서 문자열은 찾을 수 없게 되고 그러면 break되는 것을 생각하였다.

#include <iostream>
#include <string>
using namespace std;
int solution(string document, string search) {
    int cnt = 0;
    size_t i = 0;

    while (true) {
        // search 문자열을 찾으면 해당 위치 반환, 못 찾으면 npos 반환
        i = document.find(search, i);
        
        if (i == string::npos) {
            // 더 이상 search 문자열을 찾을 수 없으면 종료
            break;
        }
        
        cnt++;
        // 중복되지 않게 search의 길이만큼 건너뜀
        i += search.length();
    }

    return cnt;
}

int main()
{
    string document, search;
    int result;
    
    //입력
    //cin >> document >> search;
    getline(cin,document);
    getline(cin,search);
    //연산
    result = solution(document,search);
    
    //출력
    cout<<result;
    
    
    return 0;
}

 

728x90