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();
}
}
'[ 다먹살 ] > - Coding' 카테고리의 다른 글
[백준] 9625 BABBA (0) | 2022.04.07 |
---|---|
[구름] 레벨2 외계인과 용돈기입장 (0) | 2022.04.06 |
[백준] 17413 단어 뒤집기2 (0) | 2022.04.04 |
[프로그래머스] 레벨2 주차 요금 계산 (0) | 2022.04.03 |
[프로그래머스] 레벨1 신고 결과 받기 (0) | 2022.04.02 |
댓글