
BACKJOON>14503번: 로봇청소기
📘 문제풀이
import sys
from collections import deque
n, m = map(int, sys.stdin.readline().split())
r, c, d = map(int, sys.stdin.readline().split())
graph = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
visited = [[False] * m for _ in range(n)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
cnt = 0
x = r
y = c
while 1:
if graph[x][y] == 0:
graph[x][y] = 2
cnt += 1
flag = 0
for _ in range(4):
nx = x + dx[(d+3)%4]
ny = y + dy[(d+3)%4]
d = (d+3)%4
if nx < 0 or nx > n-1 or ny < 0 or ny > m-1:
continue
if graph[nx][ny] != 0:
continue
if graph[nx][ny] == 0:
flag = 1
ddx = dx[d]
ddy = dy[d]
if x+ddx < 0 or x+ddx > n-1 or y+ddy < 0 or y+ddy > m-1:
continue
if graph[x+ddx][y+ddy] == 0:
x = x+ddx
y = y+ddy
break
if flag == 0:
if graph[x-dx[d]][y-dy[d]] == 1:
print(cnt)
break
else:
x = x-dx[d]
y = y-dy[d]