inblog logo
|
LHS's Study Space
    알고리즘문제풀기C#

    [알고리즘 문제 풀기] 다이나믹이 뭐예요?(14494)

    C#
    lhs's avatar
    lhs
    Jan 27, 2025
    [알고리즘 문제 풀기] 다이나믹이 뭐예요?(14494)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/14494
    notion image

    1. 문제 풀이 아이디어

    • 다이나믹 프로그래밍을 활용하여 문제를 해결할 수 있따.

    2. 나의 정답 코드

    StreamReader sr = new(Console.OpenStandardInput()); StreamWriter sw = new(Console.OpenStandardOutput()); string[] split = sr.ReadLine().Split(); int n = int.Parse(split[0]); int m = int.Parse(split[1]); long[,] dp = new long[n + 1, m + 1]; dp[0, 0] = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp[i, j] = (dp[i - 1, j - 1] + dp[i - 1, j] + dp[i, j - 1]) % 1000000007; } } sw.WriteLine(dp[n, m]); sr.Close(); sw.Close();

    3. 정리

    • 초기값으로 dp[0, 0] = 1을 설정한다.
    • 이중 반복문을 통해 dp[i, j] 값을 갱신한다.
      • dp[i, j]는 이전 상태들(dp[i-1, j-1], dp[i-1, j], dp[i, j-1])의 합을 사용하여 계산한다.
      • 값을 계산할 때 1000000007로 나눈 나머지를 저장한다.
    • 최종적으로 dp[n, m] 값을 출력한다.
     
    Share article

    LHS's Study Space

    RSS·Powered by Inblog