atcoder ABC199 C - IPFL の勉強

atcoder.jp


・考え方:前半後半に文字列を分ける。あとはa,bがどちらに属するかで変換を変える。文字やリストの交換は任意のx,y(文字、リストなど)に対してx,y=y,xと書ける。
・参考:
【AtCoder解説】PythonでABC199のA,B,C問題を制する! - Qiita

n=int(input())
s=input()
q=int(input())

l1=list(s[:n])  
l2=list(s[n:])

for _ in range(q):
  t,a,b=map(int,input().split())
  a-=1
  b-=1
  if t==1:
    #a,bが文字列の前半後半どちらに属するかで交換を変える。
    if a<n and b<n:
      l1[a],l1[b]=l1[b],l1[a]
    elif a<n and b>=n:
      l1[a],l2[b-n]=l2[b-n],l1[a]
    elif a>=n and b<n:
      l2[a-n],l1[b]=l1[b],l2[a-n]
    else:
      l2[a-n],l2[b-n]=l2[b-n],l2[a-n]
  else:
    l1,l2=l2,l1
ans=''.join(l1+l2)
print(ans)