백준 16139 인간-컴퓨터 상호작용 Python

Derhon·2023년 12월 1일
0
post-custom-banner

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

20.39m

나의 답

import sys

s = list(sys.stdin.readline().rstrip())
prefix = []
prefix.append({})
prefix.append({s[0]: 1})

for i in range(1, len(s)):
    prefix.append(prefix[-1].copy())
    if s[i] in prefix[i + 1]:
        prefix[i + 1][s[i]] += 1
    else:
        prefix[i + 1][s[i]] = 1

for _ in range(int(sys.stdin.readline().rstrip())):
    a, l, r = list(sys.stdin.readline().rstrip().split())
    ll, rr = int(l), int(r)
    left = prefix[ll][a] if a in prefix[ll] else 0
    right = prefix[rr + 1][a] if a in prefix[rr + 1] else 0
    print(right - left)

누적합 문제다!
2차원 리스트 누적합 풀다가... 사실 내일 보는 코테에는 그렇게 안나올 것 같아서 잠시 미뤄두고 1차원 누적합...
내일도 이정도로만 나오면 좋겠다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/
post-custom-banner

0개의 댓글