만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Python 문법

시간 제한1초메모리 제한128 MB

요약
for 문과 실행 문으로 이루어진 문자열이 주어질 때, 파이썬 문법에 맞는 들여쓰기 경우의 수를 1,000,000,007로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 구현, 수학, 조합론
정답자
아직 제출이 없습니다

문제

프로그래밍 언어 Python은 C나 Java와 달리 중괄호를 여닫아서 코드를 구분하지 않는다. 대신 들여쓰기(탭)로 구분한다. 이 문제에서 다루는 Python 구문은 다음 두 가지다.

  1. for 문: 반복에 쓰이는 구문으로, 여러 구문을 포함할 수 있다. for 문이 시작되면 반복할 구문은 for 문보다 탭 하나만큼 더 들여써야 하고, for 문 안의 블록은 비어 있을 수 없다.
  2. 실행문: 실행을 나타내는 구문이다. 한 줄에 하나씩 쓸 수 있다.

여러 구문이 들여쓰기 없이 순서대로 주어졌을 때, 들여쓰기를 넣는 경우의 수가 모두 몇 가지인지 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 NN(1≤N≤50001 \le N \le 5000)개의 문자로 이루어진 문자열이 주어진다. 각 문자는 'f'(문제 본문의 for 문) 또는 'e'(문제 본문의 실행문)이며, 들여쓰기를 어떻게 넣어도 Python 문법에 어긋나는 입력은 주어지지 않는다.

출력

구문이 주어졌을 때 Python 들여쓰기를 만족하는 경우의 수를 1,000,000,007로 나눈 나머지를 출력한다.

힌트

문자열 fefe에는 다음 두 가지 들여쓰기가 있다.

for statement
    execute statement
for statement
    execute statement
for statement
    execute statement
    for statement
        execute statement

예제1

  1. 예제 1

    입력
    fefe
    
    예상 출력
    2