주문 분해 경우의 수
의견: 0
마법사가 긴 주문 문자열 \(S\)를 사전에 있는 단어들로 분해하려 한다. 사전에는 \(N\)개의 단어가 있으며, 같은 단어를 여러 번 사용해도 된다. 분해 순서는 왼쪽에서 오른쪽으로 고정된다.
예를 들어 사전에 'apple', 'pen', 'applepen'이 있을 때 'applepenapple'은 (apple+pen+apple), (applepen+apple)로 분해할 수 있어 경우의 수는 \(2\)이다.
문자열 \(S\)를 사전의 단어로 빠짐없이 분해하는 경우의 수를 \(10^9 + 7\)로 나눈 나머지를 출력하여라. 분해가 불가능하면 \(0\)을 출력한다.
- \(1 \le N \le 1\,000\)
- \(1 \le |S| \le 5\,000\)
- 각 사전 단어의 길이는 \(1\) 이상 \(15\) 이하이다.
- 모든 문자열은 알파벳 소문자로만 이루어진다.
첫째 줄에 사전의 단어 수 \(N\)과 문자열 \(S\)의 길이 \(|S|\)가 공백으로 구분되어 주어진다.
다음 \(N\)개의 줄에 사전의 단어가 한 줄에 하나씩 주어진다. 사전에 같은 단어가 중복되어 등장하지 않는다.
마지막 줄에 문자열 \(S\)가 주어진다.
\(S\)를 사전의 단어로 분해하는 경우의 수를 \(10^9 + 7\)로 나눈 나머지를 출력한다. 분해가 불가능하면 \(0\)을 출력한다.
5 13
apple
pen
applepen
pine
pineapple
applepenapple
2
'applepenapple'를 분해하는 방법: (1) apple + pen + apple, (2) applepen + apple — 총 \(2\)가지.
2 4
a
aa
aaaa
5
'aaaa'를 'a', 'aa'로 분해하는 방법은 (a+a+a+a), (aa+a+a), (a+aa+a), (a+a+aa), (aa+aa) — 총 \(5\)가지.
riseoj 작성
출처 Original
평가 및 의견
주문 분해 경우의 수
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
주문 분해 경우의 수