"연속된 수" 라는 조건을 제대로 이해하지 못했던 것과 예제문제 3번을 입력해봤을때 답이 -1이 아니라 자꾸 0으로 나와서 왜지 싶었다.
#include <iostream>
#include <algorithm>
using namespace std;
int i, N;
int arr[100023];
int dp [100023];
//배열은 담아야하는 것보다 조금 더 크게
//arr 은 숫자들을 저장할 배열, dp는 값을 저장할 배열
int main(void) {
scanf("%d", &N);
for (i=1; i <=N; i++){ //입력될 N의 갯수만큼 돌려주기
scanf("%d", &arr[i]); //돌아가면서 두번째 줄에 입력된 숫자들을
} //배열에 저장해준다
for (i=1; i<=N; i++){
if (dp[i-1]+arr[i] > arr[i]){
dp[i]= dp[i-1]+arr[i];
}else {dp[i]=arr[i];}
}
int ans=dp[1];
for (i=2; i<=N; i++){
if (ans < dp[i]){
ans = dp[i];
}
}
printf("%d", ans);
return 0;
}
cin 과 cout 는 뭔가 편리하기는 한데, 속도면에서 scanf 와 printf가 더 좋다고 하길래 되도록 사용하지 않아보려 한다.