16139-인간-컴퓨터 상호작용

2023. 1. 8. 20:25Algorithm

입력마다 반복문을 사용해서 범위안에 알파벳이 존재하는지 확인하면서 완전탐색으로 풀이할 수 있는 문제긴 하지만

문자열이 변하지 않으므로 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