본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 22862번 가장 긴 짝수 연속한 부분 수열 (large)

by 현장 2022. 5. 10.

-Code

n, k = map(int, input().split())
nums = list(map(int, input().split()))
right = 0
cnt, jump = 0, 0
result = 0
for left in range(n):
    while jump <= k and right < n:
        if nums[right] % 2 == 0:
            cnt += 1
            result = max(result, cnt)
        else:
            jump += 1
        right += 1
    if nums[left] % 2 == 0:
        cnt -= 1
    else:
        jump -= 1
print(result)

처음에 이해는 됐으나 구현에 있어서 if문을 너무 꼬이게 생각을 해서 틀렸습니다. 그래서 어디가 틀렸는지 찾아보고 조금씩 고치다 보니 while문 조건과 left부분을 생각을 안 해서 한번 더 틀리고 해결을 했습니다.