간식 시간 6초 1024MB
문제
즐거운 간식 시간이다.
당신은 간식 묶음을 쪼개서 아이들에게 나누어 주어야 한다.
간식 묶음은 끈의 형태, 즉 문자열로 나타나 있으며 간식은 I,C,P만 존재한다(Injulmi, Cookie, Patbingsu)
여기서 당신은 문자열 끈의 일부분을 잘라 모든 부분 묶음이 맛있는 간식 묶음만 존재하도록 만들고 싶다.
맛있는 간식 묶음의 조건은 다음과 같다.
[ 맛있는 간식 묶음 : I,C,P 세 문자 중 두 문자의 등장 횟수가 동일해야 하며(0회 가능), 나머지 한 문자는 더 많이 등장해야 한다. ]
(예를 들어 ICPC는 맛있는 간식 묶음이다. C가 2번 등장하고, I와 P는 같은 횟수로 1번씩 등장하기 때문이다.
또한 PPPP도 맛있는 간식 묶음이다. P가 4번 등장하고, I와 C는 같은 횟수로 0번씩 등장하기 때문이다.
그러나 PIC, PIPCCC는 맛있는 간식 묶음이 아니다. )
I,C,P로 이루어진 문자열을 적절히 잘라 모든 부분 묶음이 맛있는 간식 묶음이 되는 방법의 수를 구하라.
입력
첫 번째 줄에 I,C,P로만 이루어진 문자열 S가 들어온다. S의 길이는
출력
하나 이상의 맛있는 간식 묶음으로 연결하여 문자열 S를 만들 수 있는 방법의 수를 998244353으로 나눈 나머지를 출력한다.
부분문제
| 번호 | 점수 | 조건 |
|---|---|---|
| #1 | 10점 | S의 길이가 11이하이다. |
| #2 | 30점 | S의 길이가 5000이하이다. |
| #3 | 60점 | 추가 제약 조건 없음. |
예제 #1
ICPC
2
ICPC는 맛있는 간식 묶음만 구성되도록 하는 2가지 방법이 있다.
그대로 두는 방법 (ICPC)
각각 자르는 방법 (I), (C), (P), (C)
예제 #2
CCCIIIPPP
69
예제 #3
PICCICCIPPI
24