結果
| 問題 |
No.1292 パタパタ三角形
|
| コンテスト | |
| ユーザー |
uni_python
|
| 提出日時 | 2020-12-11 23:39:11 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,281 bytes |
| コンパイル時間 | 178 ms |
| コンパイル使用メモリ | 82,780 KB |
| 実行使用メモリ | 115,028 KB |
| 最終ジャッジ日時 | 2024-09-19 21:37:29 |
| 合計ジャッジ時間 | 2,852 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 WA * 9 |
ソースコード
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
if move_num==2 or move_num==3:
# 上下に動く場合,上下方向の移動だけ反転する,左右は変わらず
for i in range(3):
if L[i]==2:
L[i]==3
elif L[i]==3:
L[i]=2
# 左に動く場合
elif move_num==0:
nL=[0,0,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
for i in range(3):
L[i]=nL[i]
# 右に動く場合
elif move_num==1:
nL=[0,0,0]
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(L)
ans=0
for k,v in dd.items():
# print(k)
ans+=1
print(ans)
uni_python