주어진 조건에 맞게 하나씩 구현하면 된다.
왼쪽이 비어있으면 그대로 for문을 종료시키고 진행함.
왼쪽 회전을 할 때 공식을 찾아봤는데 (d + 3)% 4 이런 공식이 있었다!! 이걸 활용해서 풀었다.
N, M = map(int, input().split())
r, c, d = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(N)]
visited = [[0] * M for _ in range(N)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
visited[r][c] = 1
cnt = 1
while True:
flag = False
for _ in range(4):
nx = r + dx[(d + 3) % 4]
ny = c + dy[(d + 3) % 4]
d = (d + 3) % 4
if N > nx >= 0 == a[nx][ny] and 0 <= ny < M:
if not visited[nx][ny]:
visited[nx][ny] = 1
cnt += 1
r = nx
c = ny
flag = True
break
if not flag:
if a[r - dx[d]][c - dy[d]]:
print(cnt)
break
else:
r, c = r - dx[d], c - dy[d]