반응형
문제 링크 : www.acmicpc.net/problem/1912
1912번: 연속합
첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
www.acmicpc.net

> 풀이
동적 계획법(DP) 문제입니다. 점화식의 기준을 어디에 두냐에 따라 구현방식이 조금 달라질것 같네요.
최대값을 구해야 하니 sort를 사용합시다.
#include <bits/stdc++.h>
using namespace std;
int dp[100001];
int arr[100001];
int N;
int main(void) {
scanf("%d", &N);
for (int i = 0; i < N; i++) scanf("%d", &arr[i]);
dp[0] = arr[0];
for (int i = 1; i < N; i++) {
dp[i] = max(arr[i], arr[i] + dp[i - 1]);
}
sort(dp, dp + N);
printf("%d", dp[N - 1]);
return 0;
}
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
| 백준 11052 (카드 구매하기) / C++ (0) | 2020.11.05 |
|---|---|
| 백준 2156 (포도주 시식) / C++ (0) | 2020.11.05 |
| 백준 2583 (영역 구하기) / C++ (0) | 2020.11.02 |
| 백준 2636 (치즈) / C++ (0) | 2020.10.14 |
| 백준 7569 (토마토) / C++ (1) | 2020.10.07 |