[백준 5527] 전구 장식 Python
업데이트:
문제 이해
주어진 0/1 패턴에서 구간을 한 번만 뒤집는데 0과 1이 교대로 나타나는 패턴이 가장 길게 뒤집을 때, 그 구간의 길이를 구하는 문제.
1100101110
의 패턴이 있다면, 1101010110
이 되게 뒤집어 7
을 답으로 얻을 수 있다.
접근
구간을 뒤집어도 그 구간 안에서는 0과 1이 모두 바뀌기에 이미 교대로 되어있던 구간이 합쳐지는 경우에 구간의 길이가 길어진다.
기존에 교대로 되어있던 구간들이 있으면, 연속된 세 구간 중 가운데 구간을 반전시키면 세 구간이 이어진다.
교대로 된 구간들의 길이를 구한 뒤, 연속된 세 길이의 합중 최대를 출력하면 된다.
1100101110
의 경우 구간들의 길이를 [1, 2, 4, 1, 2]
로 구할 수 있고, 답은 1 + 2 + 4 = 7
이 된다.
정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
N = int(input())
LED = input().split()
A = []
cnt = 1
for i in range(1, N):
if LED[i] != LED[i-1]:
cnt += 1
else:
A.append(cnt)
cnt = 1
A.append(cnt)
if len(A) > 2:
ans = max([A[i-2] + A[i-1] + A[i] for i in range(2, len(A))])
else: ans = sum(A)
print(ans)
댓글남기기