문자열 매칭
임의의 텍스트 문자열 \(T\)와 패턴 문자열 \(P\)가 주어졌을 때, \(T\) 안에서 \(P\)가 몇 번 나타나는지 구하고, \(P\)가 나타나는 모든 시작 위치를 찾는 프로그램을 작성하시오.
예를 들어, T = "CATGCATGATCATGCATGAT" 이고 P = "CATGAT" 라면, \(P\)는 \(T\)의 5번째 문자부터 시작하는 구간과 15번째 문자부터 시작하는 구간에서 각각 한 번씩, 총 2번 나타난다.
이때 각 매칭의 시작 위치는 1부터 시작하는 번호를 기준으로 5과 15이 된다.
\(T\)와 \(P\)가 주어졌을 때, \(T\) 내에서 \(P\)가 나타나는 횟수와 모든 시작 위치를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 \(T\)가 주어진다.
둘째 줄에 문자열 \(P\)가 주어진다.
\(T\)와 \(P\)는 알파벳 대소문자로만 이루어진 문자열이며, 공백은 포함되지 않는다.
출력
첫째 줄에 \(T\)에서 \(P\)가 매칭되는 횟수를 출력한다.
둘째 줄에 \(P\)가 매칭되는 모든 시작 위치를 공백으로 구분하여 오름차순으로 출력한다.
제한사항
- \(1 \le |T| \le 1000000\)
- \(1 \le |P| \le 1000000\)
예제 입력 1
CATGCATGATCATGCATGAT
CATGAT
예제 출력 1
2
5 15
코멘트