[백준] 14494 다이나믹이 뭐예요?
https://www.acmicpc.net/problem/14494
14494번: 다이나믹이 뭐예요?
(1, 1)에서 (n, m)에 도달하는 경우의 수를 구하여라. 단, 경우의 수가 엄청 커질 수 있으므로 경우의 수를 1,000,000,007(=109+7)로 나눈 나머지를 출력한다.
www.acmicpc.net
dp 개념을 익히는 기본적인 문제였다. 주의할 점은 int형 배열로 선언할 경우 오버플로우가 난다는 점이었는데, long 형태의 배열을 선언하면 쉽게 해결이 되었다.
문제
입출력 예제
코드
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
final int divide = 1000000007;
long[][] way = new long[n][m];
// way 초기화
for(int i=0; i<n; i++)
{
way[i][0] = 1;
}
for(int i=0; i<m; i++)
{
way[0][i] = 1;
}
// dp 실행
for(int i=1; i<n; i++)
{
for(int j=1; j<m; j++)
{
way[i][j] = (way[i-1][j] + way[i][j-1] + way[i-1][j-1])%divide;
}
}
System.out.println(way[n-1][m-1]%divide);
sc.close();
}
}