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

백준 C# - 2193 +) 풀이

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

 

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

DP알아보러 가기

 

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

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


점화식 찾기

01 일단 적어보기

DP문제는 점화식을 구해야 하는데 일단 적어보고 어떤식으로 반복되는지 찾아야한다.

 

 

 

02 점화식 찾기

위의 적어 놓은 것을 표로 정리하면 아래와 같다.

각각의 0과 1이 어떻게 나오는지 살펴보면 0의 갯수는 앞의 0과 1의 갯수의 합이고 1의 갯수는 앞의 0의 갯수임을 알 수 있다.

그러므로 점화식은 아래와 같이 표시할 수 있다.


주의!

int형을 쓰면 안된다

90자리 이친수의 개수  2,880,067,194,370,816,120 이다.

int(4byte 2³²)가 나타낼 수 있는 값의 범위는 - 2,147,483,647 ~  2,147,483,648으로 int를 사용하게 되면 값의 범위가 넘어가게 된다 그러므로 long을 사용해야 한다.

long(8byte 2⁶⁴)이 나타낼 수 있는 값의 범위는 9,223,372,036,854,775,807이므로 값의 범위에 해당된다.


코드 전문

using System;
namespace baek2
{
    class Program
    {
        static void Main()
        {
            int num = int.Parse(Console.ReadLine());
            long[,] dp = new long[3,num+1];
            dp[0,0] = 0;
            dp[1,0] = 1;

            for(int i = 1; i<=num;i++)
            {
                dp[0,i] = dp[0,i - 1] + dp[1,i - 1];
                dp[1,i] = dp[0,i - 1];
            }
            Console.Write(dp[0,num-1] + dp[1,num-1]);
        }
    }
}

 

 

 

반응형

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

백준 C# - 15988 +) 풀이  (0) 2023.12.04
백준 C# - 10844 +)풀이  (0) 2023.12.02
백준C# - 16194 +) 풀이  (0) 2023.12.01
백준 C# - 11052 +) 풀이  (0) 2023.11.30
백준 C# - 9095 +)풀이  (0) 2023.11.30

댓글