💡문제접근
- 누적 합 알고리즘으로 나와 있어서 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