728x90
반응형
https://www.acmicpc.net/problem/20437
20437번: 문자열 게임 2
첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다.
www.acmicpc.net
문제 해결
- 문자열을 처음부터 끝까지 보면서 어떤 알파벳이 K개가 나올 때 끊어서 단어를 저장한 후 최소 길이의 단어와 최대 길이의 단어 길이를 출력하면 된다. (문제 그대로 읽은 것 같다;)
- i번째 나온 문자를 ord를 통해 구분하여 리스트에 각 문자 별로 몇번째, 몇번째에 나왔는지 따로 저장할 수 있다.
CODE
t = int(input())
for _ in range(t):
word = str(input().rstrip())
K = int(input())
memo= [[] for _ in range(27)]
result = []
for num in range(len(word)):
alphabet = ord(word[num])-ord('a')
memo[alphabet].append(num)
if len(memo[alphabet]) >= K:
result.append(word[memo[alphabet][-K]:memo[alphabet][-1]+1])
if len(result) ==0:
print(-1)
else:
result.sort(key=lambda x: len(x))
print(len(result[0]),len(result[-1]))
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2668 숫자고르기 (0) | 2023.04.07 |
---|---|
[python] 백준 2885 초콜릿 식사 (0) | 2023.04.07 |
[python] 백준 2138 전구와 스위치 (0) | 2023.04.06 |
[python] 백준 2195 문자열 복사 (0) | 2023.04.06 |
[python] 백준 8980 택배 (0) | 2023.04.06 |
댓글