AtCoder Beginner Contest 122

はい。
https://atcoder.jp/contests/abc122
ooox 976(+45)でした。

A - Double Helix

Python3

d={"A":"T","T":"A","C":"G","G":"C"}
print(d[input()])

全部連想配列で直書きしました。

B - ATCoder

Python3

d={"A","C","G","T"}
ans=chk=0
s=input()
for i in s:
    if i in d:
        chk+=1
        ans=max(ans,chk)
    else:
        chk=0
print(ans)

A,C,G,Tのいずれかなら加算し続けました。

C - GeT AC

Python

n,q=map(int,input().split())
s=input()
d=[0]*n
for i in range(1,n):
    if s[i-1]=="A" and s[i]=="C":
        d[i]+=d[i-1]+1
    else:
        d[i]=d[i-1]
for i in range(q):
    l,r=map(int,input().split())
    print(d[r-1]-d[l-1])

ACの出現回数をCの位置を基準にして累積和かな。 パラッと問題読んで最大105の長さの文字列を最大105回まっさらから調べるのは無理だから数えておくしかないだろうなー、とrまでの合計回数からl手前までの回数を引けば良さそうと思って適当に書いて手元で動作確認して良さそうだったので提出してAC.

D - We Like AGC

後で