백준 9465 c

magicdrill·2024년 3월 22일

백준 문제풀이

목록 보기
192/673

백준 9465 c

#include <stdio.h>
#include <stdlib.h>

#pragma warning(disable:4996)

int table[2][100001];
int dp[2][100001];

void input_table(int n)
{
	int j;

	for (j = 1; j <= n; j++)
	{
		scanf("%d", &table[0][j]);
	}
	for (j = 1; j <= n; j++)
	{
		scanf("%d", &table[1][j]);
	}

	return;
}

int max(int A, int B)
{
	if (A >= B)
	{
		return A;
	}
	else
	{
		return B;
	}
}

int find_dp(int n)
{
	int i, result;

	dp[0][0] = dp[1][0] = 0;
	dp[0][1] = table[0][1];
	dp[1][1] = table[1][1];
	for (i = 2; i <= n; i++)
	{
		dp[0][i] = max(dp[1][i-1], dp[1][i-2]) + table[0][i];
		dp[1][i] = max(dp[0][i-1], dp[0][i-2]) + table[1][i];
	}

	/*for (i = 0; i <= n; i++)
	{
		printf("%d ", dp[0][i]);
	}
	printf("\n");
	for (i = 0; i <= n; i++)
	{
		printf("%d ", dp[1][i]);
	}
	printf("\n");*/
	result = max(dp[0][n], dp[1][n]);

	return result;
}

int main(void)
{
	int T, i, n;

	scanf("%d", &T);
	for (i = 0; i < T; i++)
	{
		scanf("%d", &n);
		input_table(n);
		printf("%d\n", find_dp(n));
	}

	return 0;
}

0개의 댓글