책 '이것이 취업을 위한 코딩 테스트다.'에 수록되어있는 문제입니다.
def turnLeft(tmp):
if tmp==0:
tmp=3
elif tmp==3:
tmp=2
elif tmp==2:
tmp=1
elif tmp==1:
tmp=0
return tmp
n,m = map(int,input().split())
x,y,d= map(int,input().split())
# 0북,1동,2남,3서 0->3->2->1->0
dx = [0,1,0,-1]
dy = [-1,0,1,0]
matrix = [[0] * m for _ in range(n)]
for i in range(n):
matrix[i]=list(map(int,input().split()))
matrix[y][x]=2
count=1
turnTime=0
while True:
d = turnLeft(d)
nx = x+dx[d]
ny = y+dy[d]
if matrix[ny][nx]==0: #전진하기
matrix[ny][nx]=2
turnTime=0
count+=1
x=nx
y=ny
else:
turnTime+=1
if turnTime==4: #뒤로가기
nx = x-dx[d]
ny = y-dy[d]
if matrix[ny][nx]==2:
x=nx
y=ny
else:
break
turnTime=0
print(count)