조건문으로 분기만 적절히 해주면 금방 풀 수 있는 문제였다.
이런 문제를 풀 때 답으로 나올 수 있는 범위를 잘못 구해서 틀리는 경우가 종종 있었는데, 이 문제같은 경우는 입력받는 k가 10의 6승이고 n의 최대값이 1000이므로 정답으로 나올 수 있는 최대값이 10^9이 되는데, 이 값은 정수형으로 충분히 표현할 수 있는 범위이기 때문에 처음부터 답을 int형으로 잡고 풀었다.
특정 지점을 기반으로 플래그를 만들어서 값이 오르는구간/내리는구간을 구분했다. 플래그를 쓰니까 분기 세우기가 간단해져서 금방 풀었다.
굳이 백터를 쓴 이유는 문제를 잘못 이해했기 때문인데...n의 최대값이 1000이므로 배열을 써도 된다. 중간에 깨달았는데 오랜만에 백터 연습할 겸 백터로 풀었다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k, ans=0,flag=0;
vector<int> v;
cin>>n;
for(int i=0;i<n;i++){
cin>>k;
v.push_back(k);
ans+=k;
if (i==0)
continue;
if (!flag && v[i-1]<=k)
continue;
else if (!flag && v[i-1]>=k){
flag=1;
continue;
}
else if (flag && v[i-1]<k)
{
cout<<0;
return (0);
}
else if (flag && v[i-1]>=k){
continue;
}
}
cout<<ans;
return 0;
}