5527 : 전구 장식

풀이

다음과 같이 전구가 번갈아 켜진 구간 [x, y]들이 연속되어 있다고 하자.

[a, b] [c, d] [e, f]

여기서 (b c), (d e)는 서로 같은 상태(둘 다 켜지거나 꺼지거나)라고 가정하자.

여기서 [c, d] 구간을 flip 해주면 전체 [a, f] 구간이 번갈아 켜지게 된다.

띠용?

코드

#include <cstdio>
#include <algorithm>
int n, ans, pos = 1, cnt[100001];
int main() {
	scanf("%d", &n);
	for (int i = 0, a = -1, b; i < n; i++) {
		scanf("%d", &b);
		cnt[a == b ? ++pos : pos]++, a = b;
	}
	for (int i = 1; i <= pos; i++) ans = std::max(ans, cnt[i-1] + cnt[i] + cnt[i+1]);
	printf("%d", ans);
	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-03-31 00:05

Read more posts by this author