코드 (1차 - 50점)
python
"""인간 컴퓨터 상호작용"""
import sys
input = sys.stdin.readline
S = input() # 문자열
q = int(input()) # 문제의 수
for _ in range(q):
alpha, l, r = map(str, input().split())
l, r = int(l), int(r)
cnt = [0] * len(S)
for i in range(r+1):
if S[i] == alpha:
cnt[i] = cnt[i-1] + 1
else: cnt[i] = cnt[i-1]
print(cnt[r] - cnt[l-1])
코드 (2차- 100점)
python
"""인간 컴퓨터 상호작용"""
import sys
input = sys.stdin.readline
S = list(input().rstrip()) # 문자열
arr = [[0 for i in range(26)] for _ in range(len(S))]
arr[0][ord(S[0]) - 97] = 1
for i in range(1, len(S)):
arr[i][ord(S[i]) - 97] = 1
for j in range(26):
arr[i][j] += arr[i-1][j]
q = int(input()) # 문제의 수
for _ in range(q):
alpha, l, r = input().split()
alpha = ord(alpha) - 97
l, r = int(l), int(r)
if l == 0:
print(arr[r][alpha])
else:
print(arr[r][alpha] - arr[l-1][alpha])
- 하단과 같이 만들어야 함
ex. seung
['s', 'e', 'u', 'n', 'g']
[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
's'일때 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
'e'일때 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
'u'일때 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0]
'n'일때 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0]
'g'일때 [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0]
a 2 4 이다 하면
4번째 = 'g' => 'g'일때 a는 0번
2-1번째 = 's' => 's'일때 a는 0번
즉 0번이 출력.