[백준] 16139번 인간-컴퓨터 상호작용 ★★

거북이·2023년 3월 7일
0

백준[실버1]

목록 보기
42/67
post-thumbnail

💡문제접근

  • 누적 합 알고리즘으로 나와 있어서 1차원 배열을 이용한 누적 합을 이용했는데 계속 50점이 나와서 어디가 문제인가했는데 문자열의 길이가 엄청나게 큰 값인 경우 for문으로 탐색하기에는 무리가 있어 시간초과가 발생한 것 같다.
  • 결국 전에 풀었던 ascii_lowercase 방식을 그대로 이용했고 결국 내 힘으로 해결하지 못한 문제였다.

💡코드(메모리 : 213624KB, 시간 : 668ms, PyPy3로 제출)

import sys
input = sys.stdin.readline
from string import ascii_lowercase

S = input().rstrip()
q = int(input())
char_lst = {}
lst = ascii_lowercase
for i in lst:
    char_lst[i] = [0]
    count = 0
    for j in range(len(S)):
        if S[j] == i:
            count += 1
        char_lst[i].append(count)

for _ in range(q):
    a, l, r = input().split()
    l, r = int(l), int(r)
    print(char_lst[a][r+1] - char_lst[a][l])

💡소요시간 : X

0개의 댓글