본문 바로가기
알고리즘 문제풀이/백준

[백준 1543] 문서 검색

by m2162003 2020. 12. 16.

www.acmicpc.net/problem/1543

 

1543번: 문서 검색

세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한

www.acmicpc.net

브루트포스를 돌면 tle가 아닐까..했으나 길이가 짧아서 아닌거 같다.

 

접근 방식은 간단하다. 모든 문자열 비교 - 브루트포스이다.

처음엔 0부터 비교하는 걸로 했으나 반례가 존재했다.

ababaa
abaa

같은 로직으로 앞에서 부터 비교를 시작하면 aba까지 체크하고 a와 b가 달라서 지나가버리지만

뒤에서 부터 비교하면 abaa를 잡아낼 수 있다.  

 

 

공백이 포함된 입력값도 제공되므로 getline(cin, 문자열)을 사용해야 한다.

#include <iostream>
#include <string>

using namespace std;

string str;
string p;
int main(void)
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  getline(cin, str);
  getline(cin, p);

  int n = str.length();
  int m = p.length();

  int i = n - 1, j = m - 1, result = 0;
  bool flag = false;
  while (i > -1 && j > -1)
  {
    while (i > -1 && j > -1 && str[i] == p[j])
    {
      i--;
      j--;
      flag = true;
    }

    if (!flag)
    {
      i--;
    }

    if (j == -1)
    {
      result++;
    }
    j = m - 1;
    flag = false;
  }
  cout << result << "\n";
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 15683] 감시  (0) 2020.12.16
[백준 2012] 등수 매기기  (0) 2020.12.16
[백준 1541] 잃어버린 괄호  (0) 2020.12.16
[백준 2011] 암호코드  (0) 2020.12.15
[백준 1629] 곱셈  (1) 2020.12.13

댓글