ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준(BOJ) 1543번 문서 검색
    알고리즘 풀이/백준(Boj) 2019. 8. 15. 17:58

     문제 :  https://www.acmicpc.net/problem/1543


    문제

    세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다.

    세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오.


    나의풀이:

    주의할점은 첫째로 cin 으로 입력시 enter까지 포함되 공백문자가 포함되기 때문에 getline 으로 문자를 받아야 한다.



    두번째는 검색하려는 단어가 문서보다 큰 경우에 있어서 예외처리를 해주자.



    최대한 많은 단어를 찾아야 하기때문에 i =0부터 시작하면서 b의 사이즈 만큼 같다면 sum을 +1 해주고 그만큼 뛰어넘게 된다.





    코드 ( C ++ )


    #include <iostream>

    #include <string>

    using namespace std;


    string a;

    string b;


    int main()

    {

    getline(cin, a);

      getline(cin, b);


    //b가 더 클경우 예외처리

    if (a.size() < b.size())

    cout << 0 << "\n";

    else {


    int sum = 0;

    for (int i = 0; i < a.size() - b.size() + 1; ++i)

    {

    bool check = true;

    for (int j = 0; j < b.size(); ++j)

    {

    check = true;

    if (a[i + j] != b[j]) {

    check = false;

    break;

    }

    }

    if (check) {

    sum++;

    i += b.size() - 1;

    }

    }

    cout << sum << "\n";

    }

    return 0;

    }




    '알고리즘 풀이 > 백준(Boj)' 카테고리의 다른 글

    백준(BOJ) 1707번 이분 그래프  (0) 2019.08.17
    백준(BOJ) 1049번 기타줄  (0) 2019.08.16
    백준(BOJ) 11650번 좌표 정렬하기  (0) 2019.08.15
    백준(BOJ) 2231번 분해합  (0) 2019.08.14
    백준(BOJ) 2294번 동전 2  (0) 2019.08.13
Designed by Tistory.