16139-인간-컴퓨터 상호작용
2023. 1. 8. 20:25ㆍAlgorithm
입력마다 반복문을 사용해서 범위안에 알파벳이 존재하는지 확인하면서 완전탐색으로 풀이할 수 있는 문제긴 하지만
문자열이 변하지 않으므로 DAT(Data Address Table)에 각 알파벳들의 위치를 저장해놓으면 더욱 간단하게 풀이 할 수 있는 문제이다.
1. 알파벳 26개의 위치를 담을 DAT를 생성한다.
2. 입력받은 문자열을 아스키코드를 활용하여 0번에서 25번까지의 위치에 알파벳의 위치를 저장한다.
3. 입력을 받은 후 입력받은 알파벳의 아스키코드를 추출하여 그 알파벳의 위치정보를 담고 있는 DAT에 접근한다
4. 그 위치에서 start와 end사이에 숫자가 존재하는지 확인한다. 만약 존재한다면 answer카운트를 1개 증가시킨다.
import sys
#sys.stdin = open("/Users/positive/Desktop/무제 폴더/Algorithm/230108/16139in.txt","r")
input = sys.stdin.readline
DAT = [[] for _ in range(26)]
word = list(input())
for i in range(len(word)-1):
DAT[ord(word[i])-97].append(i)
N = int(input())
for _ in range(N):
alpha,start,end = map(str,input().split())
start = int(start)
end = int(end)
answer=0
for i in DAT[ord(alpha)-97]:
if i >= start and i <= end:
answer+=1
print (answer)
'Algorithm' 카테고리의 다른 글
11054 - 가장 긴 바이토닉 수열 (0) | 2023.01.06 |
---|---|
금광 - dp (2) | 2023.01.05 |
15591-Mootube(시간초과) (0) | 2023.01.05 |
18429-근손실 (0) | 2023.01.05 |
14494-다이나믹이 뭐에요? (0) | 2023.01.04 |