문제 링크
요약
- 쉬운 문제
최종
결과
1양옆에 있는0들의 개수 최대값을 구해주면 된다. 이상한 함정 없이 쉽게 풀리는 문제.
class Solution {
public:
int maxActiveSectionsAfterTrade(string s) {
bool is_1 = true;
int zeros = 0;
int cnt = 0;
int prev_cnt = -1;
int max_trade = 0;
for (char c : s) {
if (c == '1') {
if (!is_1) {
if (prev_cnt != -1) {
max_trade = max(max_trade, prev_cnt + cnt);
}
prev_cnt = cnt;
cnt = 0;
is_1 = true;
}
} else /* (c == '0') */ {
zeros++;
cnt++;
is_1 = false;
}
}
if (!is_1 && prev_cnt != -1) {
max_trade = max(max_trade, prev_cnt + cnt);
}
return s.size() - zeros + max_trade;
}
};