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

백준 C# - 9465 +) 풀이

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

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

DP알아보러 가기

 

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

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


점화식 구하기

처음에 점화식을 구하고 풀었는데 틀렸다. 1칸이 떨어진 경우와 2칸이 떨어진 경우 두가지 경우를 생각해야 했다. 예제를 예시로 보면 100에서 60사이에는 두 칸이 떨어져 있는 것을 확인할 수 있다.

점화식을 세워보자

1칸 , 2칸을 비교해서 큰 값을 dp에 넣으면 된다. 

점화식


코드 전문

using System;
namespace baek2
{

   class Program 
   {
        public static void Main()
        {
            int n = int.Parse(Console.ReadLine());

            while (n > 0)
            {
                int m = int.Parse(Console.ReadLine());
                string[] str1 = Console.ReadLine().Split();
                string[] str2 = Console.ReadLine().Split();
                long [,]arr = new long[3,m+5];
                long[,] dp = new long[3, m + 5];
                for(int i = 1; i<=str1.Length;i++)
                {
                    arr[0, i] = long.Parse(str1[i-1]);
                    arr[1, i] = long.Parse(str2[i-1]);
                }
                dp[0, 0] = 0;
                dp[1, 0] = 0;
                dp[0, 1] = arr[0, 1];
                dp[1, 1] = arr[1, 1];
                for (int i = 2; i <= m; i++)
                {
                    dp[0, i] = Math.Max(dp[1, i - 1], dp[1, i - 2]) + arr[0, i];
                    dp[1, i] = Math.Max(dp[0, i - 1], dp[0, i - 2]) + arr[1,i];
                }
                Console.WriteLine(Math.Max(dp[0,m],dp[1,m]));
                n--;
            }
        }
   }
}
반응형

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

백준 C# - 11724 +) 풀이  (0) 2023.12.10
백준C# - 1260 +) 풀이  (1) 2023.12.09
백준 C# - 11057  (0) 2023.12.07
백준 C# - 1309 +) 풀이  (0) 2023.12.04
백준 C# - 1149 +) 풀이  (0) 2023.12.04

댓글