結果

問題 No.1292 パタパタ三角形
ユーザー uni_python
提出日時 2020-12-11 23:49:05
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 166 ms / 2,000 ms
コード長 2,286 bytes
コンパイル時間 142 ms
コンパイル使用メモリ 82,464 KB
実行使用メモリ 107,480 KB
最終ジャッジ日時 2024-09-19 21:37:32
合計ジャッジ時間 2,390 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))


"""
三角形のマスを考える,xy座標を当てはめる
上下左右のうち,形態によっていけない宝庫王が一箇所ある

デフォルトが
a△b
 c
なら,a:(-1,0),b:(1,0),c:(0,-1)で上にはいけない
"""

S=input()
#LRUD
ML=[(-1,0),(1,0),(0,1),(0,-1)]

# a,b,cに動きを割り当てる
L=[0,1,3]# デフォルトはこの並び

from collections import defaultdict
dd = defaultdict(int)
dd[(0,0)]=1

#今の座標
x=0
y=0

for c in S:
    num=ord(c)-ord("a")
    move_num=L[num]
    move=ML[move_num]#どの移動を選んだか
    x+=move[0]
    y+=move[1]
    
    dd[(x,y)]=1
    
    nL=[0,0,0]
    if move_num==2 or move_num==3:
        # 上下に動く場合,上下方向の移動だけ反転する,左右は変わらず
        for i in range(3):
            if L[i]==2:
                nL[i]=3
            elif L[i]==3:
                nL[i]=2
            else:
                nL[i]=L[i]
    
    # 左に動く場合
    elif move_num==0:
        for i in range(3):
            if L[i]==0:#左移動が右移動になる
                nL[i]=1
            elif L[i]==1:#右移動が上下移動どちらかになる
                if 2 in L:#上移動があれば,下移動が生まれる
                    nL[i]=3
                else:#下移動があれば,上移動が生まれる
                    nL[i]=2
            else:#上下移動は左移動になる
                nL[i]=0

    
    # 右に動く場合
    elif move_num==1:
        for i in range(3):
            if L[i]==1:#右移動が左移動になる
                nL[i]=0
            elif L[i]==0:#左移動が上下移動どちらかになる
                if 2 in L:#上移動があれば,下移動が生まれる
                    nL[i]=3
                else:#下移動があれば,上移動が生まれる
                    nL[i]=2
            else:#上下移動は右移動になる
                nL[i]=1
                
    for i in range(3):
        L[i]=nL[i]
    
    # print(x,y,":",num,move_num,move)
    # print(move_num)
    # print(L)

ans=0
for k,v in dd.items():
    # print(k)
    ans+=1
print(ans)
0