문제
N개의 0과 1로 이루어진 수열에서 연속한 1의 개수 중 최대값을 출력하는 프로그램을 만드시오.
입력
첫 줄에 테스트케이스 개수 T, 다음 줄부터 테스트케이스별로 첫 줄에 수열의 길이 N, 다음 줄에 N개의 0과1로 구성된 수열이 공백없이 제공된다.
1<=T<=10, 10<=N<=1000
출력
#과 테스트케이스 번호, 빈칸에 이어 답을 출력한다.
입력 예
3
10
0011001110
10
0000100001
10
0111001111
출력 예
#1 3
#2 1
#3 4
내가 쓴 코드
T = int(input())
for t in range(T):
N = int(input()) # N : 수열의 길이
a = list(map(int, input())) # a : N개의 0과 1로 구성된 수열
c = [] # c : cnt 모으는 리스트
cnt = 0 # 연속한 1의 개수
for i in range(N):
if a[i] == 0:
if cnt > 0:
c.append(cnt)
cnt = 0
else: # i == 1
cnt += 1
if i == N-1:
c.append(cnt)
c_max = c[0] # 연속한 1의 개수 중 최대값 구하기
for cm in c:
if cm > c_max:
c_max = cm
print(f'#{t+1} {c_max}')
출력 결과

728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
| [BOJ #1181] 단어 정렬 (0) | 2024.02.02 |
|---|---|
| [SWEA #16268] 풍선팡2 (1) | 2024.02.02 |
| [SWEA #9367] 점점 커지는 당근의 개수 (2) | 2024.02.02 |
| [SWEA #1979] 어디에 단어가 들어갈 수 있을까 (0) | 2024.02.02 |
| [BOJ #23968] 알고리즘 수업 - 버블 정렬 1 (1) | 2024.02.01 |