-Code
from collections import deque
n, k = map(int, input().split())
doll = list(map(int, input().split()))
queue = deque()
step = k * 2 + 1
cnt, ryan = 0, 0
result = 1e9
for i in range(n):
queue.append(doll[i])
if step < cnt:
if queue.popleft() == 1:
ryan -= 1
if doll[i] == 1:
ryan += 1
cnt += 1
elif doll[i] == 2:
cnt += 1
while ryan == k:
result = min(len(queue), result)
if queue.popleft() == 1:
ryan -= 1
print(result if result != 1e9 else -1)
처음에 시간 초과로 실패해서 고민해도 안돼서 찾아보니 deque를 이용하는 방법이 있어서 몇 시간 생각하여 값이 조금씩 틀어지게 나와서 print를 찍어보니 앞에 2가 있고 라이언의 개수가 k와 같을 때 길이가 길게 나오는 것이 문제였습니다. 그래서 while문으로 라이언의 수가 k와 같을 경우 deque의 맨 앞의 2를 모두 지웠으나 어딘가에서 틀려서 밖으로 빼었더냐 값이 나왔습니다. 하지만 값이 나오지 않을 경우 -1 출력하는 것을 빼먹어서 다시 고쳐서 해결을 했습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 22857번 가장 긴 짝수 연속한 부분 수열 (small) (0) | 2022.05.11 |
---|---|
[백준/파이썬] 10025번 게으른 백곰 (0) | 2022.05.11 |
[백준/파이썬] 3273번 두 수의 합 (0) | 2022.05.10 |
[백준/파이썬] 6159번 코스튬 파티 (0) | 2022.05.10 |
[백준/파이썬] 1940번 주몽 (0) | 2022.05.10 |