Official

B - Santa Claus 1 Editorial by kyopro_friends


まずは、サンタクロースの移動をシミュレーションする問題を考えます。

この問題は、サンタクロースの現在の座標を保持し、\(T\)\(i\) 文字目が何の文字であるかと、移動先のマスが通行可能であるかどうかに応じて条件分岐をして現在の座標を更新してくことで求められます。

擬似コード

X,Y=サンタクロースの初期座標
for i in 1..N:
  if T[i]=='U' and S[X-1][Y]!='#': X-=1
  if T[i]=='D' and S[X+1][Y]!='#': X+=1
  if T[i]=='L' and S[X][Y-1]!='#': Y-=1
  if T[i]=='R' and S[X][Y+1]!='#': Y+=1

print(X,Y)

通過・到達する家の個数を考えます。同じ家を複数回数えないようにするためには、家のあるマスに到達した時点で、到達した家の個数のカウントを1増やし、その家を破壊するのが単純な方法でしょう。

実装例(Python)

H,W,X,Y = map(int,input().split())
S = [list(input()) for _ in range(H)]
T = input()

X-=1
Y-=1
ans=0
for c in T:
  if c=='U' and S[X-1][Y]!='#': X-=1
  if c=='D' and S[X+1][Y]!='#': X+=1
  if c=='L' and S[X][Y-1]!='#': Y-=1
  if c=='R' and S[X][Y+1]!='#': Y+=1
  if S[X][Y]=='@':
    ans+=1
    S[X][Y]='.'

print(X+1,Y+1,ans)

posted:
last update: