1912번 - 연속합
#include #include using namespace std;
int main() { ios_base::sync_with_stdio(false); int input; cin >> input;
vector a(input);
for (int i = 0; i < input; i++) { cin >> a[i]; }
if (input == 1) { cout << a[0] << '\n'; return 0; }
int result = a[0]; int tmp = a[0]; bool check = false;
for (int i = 1; i < input; i++) { if (a[i] < 0) { if (i + 1 < input) { if (tmp >= 0 && tmp > a[i] && a[i + 1] > 0) { tmp += a[i]; continue; } } if (tmp <= 0) { if (result < a[i]) { result = a[i]; check = true; tmp = a[i]; } } else { if (result < tmp) { result = tmp; tmp = 0; } } } else { if (tmp >= 0) tmp += a[i]; else tmp = a[i]; } }
if (tmp > result) { if (!check) cout << tmp << '\n'; } else cout << result << '\n';
return 0;}
진짜 이상하네요..
이거 한번 해보실래요? 아 그리고 글 쓸 때 소스 추가라고 따로 코드 입력하는 부분에 코드를 넣어주세요.
애초에
if (a[i] < 0) {일 경우엔 왜 복잡하게 처리하신건지 잘 모르겠습니다.
} else { if (tmp >= 0) tmp += a[i]; else tmp = a[i]; }
요 부분만 적절히 사용하시면 되실듯합니다.
댓글을 작성하려면 로그인해야 합니다.
sungdd2 4년 전
#include
#include
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
int input;
cin >> input;
vector a(input);
for (int i = 0; i < input; i++) {
cin >> a[i];
}
if (input == 1)
{
cout << a[0] << '\n';
return 0;
}
int result = a[0];
int tmp = a[0];
bool check = false;
for (int i = 1; i < input; i++) {
if (a[i] < 0) {
if (i + 1 < input) {
if (tmp >= 0 && tmp > a[i] && a[i + 1] > 0) {
tmp += a[i];
continue;
}
}
if (tmp <= 0) {
if (result < a[i]) {
result = a[i];
check = true;
tmp = a[i];
}
}
else {
if (result < tmp) {
result = tmp;
tmp = 0;
}
}
}
else {
if (tmp >= 0)
tmp += a[i];
else
tmp = a[i];
}
}
if (tmp > result) {
if (!check)
cout << tmp << '\n';
}
else
cout << result << '\n';
return 0;
}
진짜 이상하네요..