Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 백준 17071
- 백준 숨바꼭질5
- 인덱스 트리
- 프로그래머스
- C++1167
- 가장 긴 증가하는 부분 수열
- C++1967
- 조합론
- C++ 17071
- 백트래킹
- 16933
- 다익스트라
- C++ 1918
- BFS
- DP
- Backtracking
- 알고리즘
- 소트 게임
- 위상정렬
- LIS
- 문자열
- DFS
- 투포인터
- 순열
- 조합
- C++ 1937
- c언어
- C++
- 백준
- strtok
Archives
- Today
- Total
블로그
[C++] 1912: 연속합 본문
728x90
실버 Ⅱ
#include <iostream>
using namespace std;
int N;
int arr[100000];
int dp[100000];
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
dp[0] = arr[0];
int ans = dp[0];
for (int i = 1; i < N; i++) {
if (dp[i - 1] > 0) dp[i] = arr[i] + dp[i - 1];
else dp[i] = arr[i];
if (dp[i] > ans) ans = dp[i];
}
printf("%d", ans);
}
투포인터로 첨에 해보려 했는데
배열의 원소에 마이너스가 있어서 안되는 것으로 추측...
사실 투포인터 원리를 제대로 다 이해 못한거 같기도 하고ㅋㅋ
아무튼 내 추측으로는 마이너스땜에 안되는거같음
포함하거나~~ 에서 포함당하는거는 dp[i-1] 인데 dp[i-1]이 나타내는건
수열 i-1 원소까지의 연속합 중 가장 큰 값이다.
그래서.. 그냥 dp[i-1]이 양수이기만 하면 그 값을 반영해서 넣어주면 된다
0일경우는 둘 중 어떤 액션을 취하든 의미 없기 때문에 if문/else문 중 암데나 넣어주면 됨
'PS' 카테고리의 다른 글
C++ 매크로 (0) | 2022.06.17 |
---|---|
[C++] 2470: 두 용액 (0) | 2022.06.17 |
[C++] 14501: 퇴사 (0) | 2022.01.31 |
[C++] 14502: 연구소 (0) | 2022.01.29 |
[C++] 1987: 알파벳 (0) | 2022.01.28 |
Comments