본문 바로가기

알고리즘 관련/BOJ

BOJ)1305 광고

문제:icpc.me/1305


광고의 길이중 가장 짧은 광고는 조금만 생각해보면 n-pi[n-1]이라는 걸 알 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
vector<int> pi;
int n;
string x;
void getpi(){
    int j = 0;
    for (int i = 1; i < n; i++)
    {
        while (j > && x[i] != x[j])
            j = pi[j - 1];
        if (x[i] == x[j])
            pi[i] = ++j;
    }
}
int main(){
    scanf("%d"&n);
    pi.resize(n + 1);
    cin >> x;
    getpi();
    printf("%d\n", n - pi[n - 1]);
    return 0;
}
cs