R00370
경계의 개수
레이팅
의견: 0
설명
문자열 \(S\) 가 주어진다. \(S\) 의 진(proper) 경계(border) 의 개수를 구하여라.
경계란 \(S\) 의 접두사이면서 동시에 접미사인 문자열이고, 진 경계는 \(S\) 자기 자신을 제외한 것이다. 길이가 서로 다른 진 경계는 서로 다른 것으로 센다. (빈 문자열은 경계로 세지 않는다.)
모든 경계의 길이는 실패 함수를 따라 \(\pi[|S|], \pi[\pi[|S|]], \dots\) 로 연쇄적으로 얻어진다. 이 체인의 길이가 곧 경계의 개수이며 \(O(|S|)\) 에 구할 수 있다.
제약
\(1 \le |S| \le 1{,}000{,}000\)
\(S\) 는 알파벳 소문자로만 이루어져 있다.
입력 형식
첫째 줄에 알파벳 소문자로 이루어진 문자열 \(S\) 가 주어진다.
출력 형식
\(S\) 의 진 경계의 개수를 출력한다.
예제 1
입력
abacaba
출력
2설명
abacaba 의 진 경계는 a(길이1), aba(길이3) 두 개이다. 따라서 답은 2.
예제 2
입력
aaaa
출력
3설명
aaaa 의 진 경계는 a,aa,aaa 로 3개이다.
문제 정보
riseoj 작성
출처 Original
태그
평가 및 의견
경계의 개수
개요
Log in to rate problems.
개별 의견
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
경계의 개수
게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다.
로그인하고 제출하기