💌문제
https://www.acmicpc.net/problem/16472
💌풀이
투포인터를 사용해서 start, end를 1씩 늘려줘가며 조건을 확인한다.
조건은 현재 check 하는 set 자료형에 있는 알파벳 숫자가 n을 넘어갈 때로 설정했다.
그리고 while문을 빠져나온 뒤에도 만약에 n이 알파벳 숫자 갯수보다 크면 조정해주고, 크지 않으면 현재 설정된 lenS 문자열의 길이를 answer에 설정해서 출력한다.
💌파이썬 코드
n=int(input())
s=str(input())
s=list(s)
start=0
end=0
check=set(s[0])
answer=0
lenS=1
while start<len(s)-1 and end<len(s)-1:
if len(check)>n:
start+=1
lenS-=1
answer=max(answer,lenS)
check=set(s[start:end+1])
else:
end+=1
lenS+=1
check.add(s[end])
if len(check)>n:
answer=max(answer,lenS-1)
else:
answer=max(answer,lenS)
print(answer)
댓글