diff --git "a/khj20006/202512/05 BOJ P5 \352\260\200\354\236\245 \352\270\264 \355\214\260\353\246\260\353\223\234\353\241\254 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264.md" "b/khj20006/202512/05 BOJ P5 \352\260\200\354\236\245 \352\270\264 \355\214\260\353\246\260\353\223\234\353\241\254 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264.md" new file mode 100644 index 00000000..243c86ce --- /dev/null +++ "b/khj20006/202512/05 BOJ P5 \352\260\200\354\236\245 \352\270\264 \355\214\260\353\246\260\353\223\234\353\241\254 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264.md" @@ -0,0 +1,24 @@ +```cpp +#include +using namespace std; + +string t, s = "#"; +int A[222222]{}, C = 1, R = 1; + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin >> t; + for (char i : t) s += i, s += "#"; + + int ans = 0; + for (int i = 1; i < s.size(); i++) { + A[i] = min(A[2 * C - i], R - i); + while (i > A[i] && i + A[i] + 1 < s.size() && s[i - A[i] - 1] == s[i + A[i] + 1]) A[i]++; + if (i + A[i] >= R) C = i, R = i + A[i]; + ans = max(ans, A[i]); + } + cout << ans; + +} +```