728x90
https://www.acmicpc.net/problem/16472
투포인터 알고리즘을 사용해서 연속된 문자열을 점검할 수 있는 문제였다.
투포인터 알고리즘은 연속된 구간의값을 모두 판단하고 싶을떄 사용하면 좋다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import sys
input = sys.stdin.readline
n = int(input())
str1 = str(input().strip())
dic = {}
result = [0, 0]
start = 0
end = 0
while start < len(str1) and end < len(str1):
if str1[end] not in dic:
dic[str1[end]] = 1
else:
dic[str1[end]] += 1
# 만약 딕셔너리안에 n개보다 더 많은 알파벳이 들어갔을경우
# start값을 올려서 n개가 되도록 알파벳을 빼줘야한다.
if len(dic) > n:
while start <= end and len(dic) > n:
if dic[str1[start]] == 1:
dic.pop(str1[start])
else:
dic[str1[start]] -= 1
start += 1
# 만약 연속된 n개의 문자열이 들어왔을경우
# result안에 최대 길이가 들어갈 수 있도록 넣어준다.
if len(dic) <= n:
# 최대길이로 갱신해주자~
if result[1] - result[0] < end - start:
result[0] = start
result[1] = end
end += 1
print(result[1] - result[0] + 1)
|
cs |
728x90
'PS > 백준' 카테고리의 다른 글
[백준 21608번] 상어 초등학교 (파이썬/python) (0) | 2021.07.01 |
---|---|
[백준 14888번] 연산자 끼워넣기 (파이썬/python) (0) | 2021.07.01 |
[백준 13460번] 구슬 탈출 2 (파이썬/python) (0) | 2021.06.24 |
[백준 13458번] 시험 감독 (파이썬/python) (0) | 2021.06.19 |
[백준 16637번] 괄호 추가하기 (파이썬/python) (0) | 2021.06.19 |