$O(ab)$ a, b: 문서, 단어 문자열 길이
앞에서부터 단어가 있으면 카운트하고 그 길이만큼 건너뛴다.
이는 그리디 알고리즘인데 건너뛰는 부분에 단어가 있어도 이것을 포함하는 해보다 항상 나쁘지 않기 때문에 쓸 수 있다.
#include<cstdio> #include<cstring> char s[2501], c[51]; int r, sl, cl; int main() { scanf("%[^\n] %[^\n]", s, c); sl = strlen(s); cl = strlen(c); for (int i = 0; i < sl; i++) if (!strncmp(s + i, c, cl)) r++, i += cl - 1; printf("%d", r); return 0; }
댓글 없음 :
댓글 쓰기