백준 1912 c++

magicdrill·2024년 3월 1일

백준 문제풀이

목록 보기
74/673

백준 1912 c++

//이중for문 사용 불가
#include <iostream>

using namespace std;

int input(int lower, int upper)
{
	//cout << "input()" << endl;
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_arr(int *arr, int n)
{
	//cout << "input_arr()\n";
	int i;

	for (i = 0; i < n; i++)
	{
		arr[i] = input(-1000, 1000);
	}

	return;
}

int find_result(int* arr, int n)
{
	//cout << "find_result()\n";
	int total = 0, temp;
	int max = -1000;
	int i;
	
	for (i = 0; i < n; i++)
	{
		//연속합 해온 결과에 연속합을 했을때 결과가 음수가 나오면 다시 처음부터
		temp = arr[i] + total;
		if (temp >= 0)//연속합 결과가 음수가 아닌 경우
		{
			total = temp;
		}
		else//연속합 결과가 음수인 경우
		{
			total = 0;
		}
		if (temp > max)
		{
			max = temp;
		}
		else
		{
			;
		}
	}

	return max;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	int* arr;
	int result;

	n = input(1, 100000);
	arr = new int[n];
	input_arr(arr, n);
	result = find_result(arr, n);
	cout << result << "\n";

	delete[] arr;

	return 0;
}

0개의 댓글