Coding_Test_C++

BaekJoon 1912번: 연속합

풀이법

1) 점화식을 구현한다면 누구나 쉽게 풀 수 있는 문제라고 생각한다.

    메모이제이션을 활용하여 현재까지의 최대 합을 구하고 이를 ret이라는 변수에 담아 최대를 반환하게 했다.

    max(직전까지 최대 합+ 현재 값, 현재 값)

#include <iostream>
#include <algorithm>
using namespace std;

int n;
int c[100001];
int d[100001];
int res = -100000000;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int a;
		cin >> a;
		c[i] = a;
	}
	d[0] = c[0];
	for (int i = 1; i < n; i++)
	{
		d[i] = max(d[i - 1] + c[i], c[i]);
		res = max(d[i], res);
	}
	res = max(d[0], res);
	cout << res;
}

github.com/pearlcrum/CodingTest/tree/main

'Coding_Test_C++' 카테고리의 다른 글

BaekJoon 2193번: 이친수  (0) 2021.04.21
BaekJoon 11659번: 구간 합 구하기 4  (0) 2021.04.19
BaekJoon 11726번: 2xn 타일링  (0) 2021.04.17
BaekJoon 1149번: RGB거리  (0) 2021.04.16
BaekJoon 2579번: 계단 오르기  (0) 2021.04.12