본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 20437 문자열 게임 2

by Alan_Kim 2023. 4. 7.
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
반응형

댓글