본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 1309 +) 풀이

by 코딩하는 돼징 2023. 12. 4.
반응형

 

DP를 이용해서 풀어야한다.

DP알아보러 가기

 

C# - 다이나믹 프로그래밍(DP)

다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 향상 시키는 최적화 기법중 하나이다. 큰 문제를 작은 부분 문제로 나누어 해결하며 이미 계산된 작은 문제의 결


점화식 구하기

01 일단 적어보자

N = 1,2,3이였을 경우의 수를 다 적어보자 그러면 아래와 같이 나온다.


02 표로 정리

표를 확인해보면 관계성을 구할 수 있으므로 아래와 같은 점화식이 나온다.


 

02 % 9901

모듈려 연산

 

C# - 모듈러 연산(나머지 분배 법칙)

백준에서 DP관련 문제를 풀때 출력 부분에 큰 수로 나눈 나머지를 구하라는 부분이 계속 있어서 이부분이 왜 필요한지 자세히 알고 싶어졌다. 모듈러(Modulo) 나눗셈의 나머지를 계산하는 연산이

 


코드 전문

using System;
namespace baek2
{

   class Program 
   {
       public static void Main()
       {
            int n = int.Parse(Console.ReadLine());
            long[,] dp = new long[100001, 4];

            if(n == 1)
            {
                Console.WriteLine(3);
                return;
            }

            dp[0, 0] = 2;
            dp[0, 1] = 2;
            dp[0, 2] = 3;
            for (int i = 1; i<=n; i++)
            {
                dp[i, 0] = (dp[i - 1, 1] + dp[i - 1, 2]) % 9901;
                dp[i, 1] = (dp[i - 1, 0] + dp[i - 1, 2]) % 9901;
                dp[i, 2] = (dp[i - 1, 0] + dp[i - 1, 1] + dp[i - 1, 2]) % 9901;
            }

            Console.Write((dp[n-2,0]+dp[n-2,1]+dp[n-2,2])% 9901);
       }
   }
}
반응형

'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글

백준 C# - 9465 +) 풀이  (1) 2023.12.07
백준 C# - 11057  (0) 2023.12.07
백준 C# - 1149 +) 풀이  (0) 2023.12.04
백준 C# - 15988 +) 풀이  (0) 2023.12.04
백준 C# - 10844 +)풀이  (0) 2023.12.02

댓글