본문 바로가기

알고리즘 문제풀이

가장 긴 짝수 연속한 부분 수열 (small) [백준 22857]

https://www.acmicpc.net/problem/22857

 

두 포인터를 사용해서 문제 해결을 하면 된다. 

def find(N, K, S):
    l = 0
    max_length = 0
    removed = 0  # 현재 구간 [l..r] 안의 홀수 개수

    for r in range(N):
        if S[r] % 2 != 0:
            removed += 1
        while removed > K:
            if S[l] % 2 != 0:
                removed -= 1
            l += 1
        sub = (r - l + 1) - removed

        max_length = max(max_length, sub)

    return max_length

# 입력 처리
N, K = map(int, input().split())
S = list(map(int, input().split()))

# 결과 출력
print(find(N, K, S))

'알고리즘 문제풀이' 카테고리의 다른 글

간식 파티 [백준 20162]  (0) 2025.01.20
The Bale Tower [백준 6221]  (0) 2025.01.18
회의실 배정3[백준 19622]  (0) 2025.01.17
가장 큰 감소 부분 수열[백준 17216]  (0) 2025.01.16
회의실 배정2 [백준 19621]  (0) 2025.01.16