728x90
https://www.acmicpc.net/problem/22862
투포인터를 시간초과가 되지 않고 풀 수 있다.
투포인터에 대한 내용은 최하단에 블로그를 참고하면 된다
N, K = map(int, input().split())
numbers = list(map(int, input().split()))
ptr1, ptr2 = 0, 0
cnt, ans, dist = 0, 0, 0
while ptr1 != N and ptr2 != N:
if numbers[ptr1] % 2:
if cnt > 0:
ptr1 += 1
cnt -= 1
else:
ptr1 += 1
ptr2 = max(ptr1, ptr2)
else:
# numbers[ptr1] % 2 == 0:
if numbers[ptr2] % 2:
if cnt >= K:
if not numbers[ptr1] % 2:
dist -= 1
ptr1 += 1
else:
# cnt < K:
cnt += 1
ptr2 += 1
else:
# numbers[ptr2] % 2 == 0:
dist += 1
ptr2 += 1
ans = max(ans, dist)
# print(ptr1, ptr2, cnt, dist)
print(ans)
참고글
https://ssungkang.tistory.com/entry/Algorithm-Two-Pointers-%ED%88%AC-%ED%8F%AC%EC%9D%B8%ED%84%B0
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 13902 개업 2, python(pypy), C++ (0) | 2022.01.07 |
---|---|
[백준] 9084 동전 python (0) | 2022.01.06 |
[백준] 9370 미확인 도착지, python (0) | 2022.01.05 |
[백준] 2665 미로만들기, python, C++ (0) | 2022.01.04 |
[백준] 17404 RGB거리 2, python (0) | 2022.01.04 |