

https://www.acmicpc.net/problem/16139
첫쨋줄에 문자열 S를 입력받고
둘쨋줄에 질문 개수 q
셋쨋줄부터 특정 알파벳, 시작인덱스, 끝인덱스 를 공백을 기준으로 입력받아서
해당 특정 알파벳이 시작인덱스부터 끝 인덱스까지에서 몇개 나오는 지 개수를 출력하는 문제.
import sys
S = sys.stdin.readline().rstrip() # 문자열 S 입력
q = int(sys.stdin.readline()) # 질문 수 q 입력
# 누적합 리스트 생성
# count[i][j] : 문자열의 0~(i-1)번째 문자까지에서 알파벳 j('a'+j)가 나온 횟수
count = [[0] * 26] # 첫 줄은 0으로 초기화
# 문자열을 순회하면서 누적합 배열 구성
for i in range(len(S)):
# 직전까지의 누적 상태를 복사해서 새로운 줄로 추가
count.append(count[-1][:])
# 현재 문자의 알파벳 인덱스를 구해서 +1
# ord('a') = 97 → 'a' ~ 'z'를 0~25로 매핑
count[i + 1][ord(S[i]) - 97] += 1
# 각 질문에 대해 처리
for _ in range(q):
a, l, r = map(str, sys.stdin.readline().split())
l = int(l)
r = int(r)
# 알파벳 a의 인덱스
ch_idx = ord(a) - 97
# 누적합으로 개수 계산: count[r+1] - count[l]
result = count[r + 1][ch_idx] - count[l][ch_idx]
print(result)