투포인터 복습겸 다시 풀어보았다
defaultdict의len()은 key의 value가 0이어도 살아있다. 따라서 원치않는 길이가 나올 수 있으므로 삭제한다
from collections import defaultdict
def solution(gems):
N = len(gems)
N_GEM = len(set(gems))
counter = defaultdict(int)
head, tail = 0, 0
min_len = float('inf')
answer = []
for head in range(N):
while tail < N and len(counter) < N_GEM:
counter[gems[tail]] += 1
tail += 1
if len(counter) == N_GEM:
#print(head, tail - 1)
if tail - head < min_len:
min_len = tail - head
answer = [head + 1, tail]
counter[gems[head]] -= 1
if counter[gems[head]] == 0:
del counter[gems[head]]
return answer