아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

플레이리스트

면접 대비

시간 제한2초메모리 제한512 MB

요약
N개의 노래로 길이 P의 재생목록을 만들 때, 모든 노래가 최소 한 번 등장하고 같은 노래의 두 등장 사이에 다른 노래가 최소 M개 있어야 하는 경우의 수를 센다.
난이도

보통10점 중 6점

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

문제

수빈이는 알고리즘 캠프에서 음악을 들으면서 문제를 풀고 있다. 수빈이의 스마트폰에는 노래 NN개가 저장되어 있고, 오늘 수빈이는 노래 PP곡을 들으려고 한다. 수빈이는 다음 두 조건을 모두 만족하는 플레이리스트를 만들려고 한다. 플레이리스트에는 같은 노래를 여러 번 추가해도 된다.

  • 저장된 노래 NN개가 모두 플레이리스트에 한 번 이상 나와야 한다.
  • 같은 노래를 다시 추가하려면, 플레이리스트에서 그 두 자리 사이에 다른 곡이 적어도 MM개 있어야 한다.

플레이리스트는 길이가 PP인 노래 순서열이고, 순서가 다르면 서로 다른 플레이리스트로 센다. NN, MM, PP가 주어졌을 때, 수빈이가 만들 수 있는 플레이리스트의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN, MM, PP가 공백으로 구분되어 주어진다. (1≤N≤1001 \le N \le 100, 0≤M≤N0 \le M \le N, N≤P≤100N \le P \le 100)

출력

첫째 줄에 수빈이가 만들 수 있는 플레이리스트의 개수를 출력한다. 개수가 매우 커질 수 있으므로 1,000,000,007로 나눈 나머지를 출력한다.

힌트

N=1N = 1, M=0M = 0, P=3P = 3이면 가능한 플레이리스트는 (노래1, 노래1, 노래1) 하나뿐이다.

N=1N = 1, M=1M = 1, P=3P = 3이면 가능한 플레이리스트가 없다.

N=2N = 2, M=0M = 0, P=3P = 3일 때 (노래1, 노래1, 노래1)과 (노래2, 노래2, 노래2)는 노래 두 개를 모두 쓰지 않으므로 세지 않는다.

N=2N = 2, M=1M = 1, P=4P = 4이면 가능한 플레이리스트는 (노래1, 노래2, 노래1, 노래2)와 (노래2, 노래1, 노래2, 노래1) 둘이다.

예제4

  1. 예제 1

    입력
    1 0 3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    1 1 3
    
    예상 출력
    0
    
  3. 예제 3

    입력
    2 0 3
    
    예상 출력
    6
    
  4. 예제 4

    입력
    2 1 4
    
    예상 출력
    2