백준 14503 로봇청소기

gmlwlswldbs·2021년 10월 24일
0

코딩테스트

목록 보기
62/130
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]

n, m = map(int, input().split())
rx, ry, d = map(int, input().split())
g = [list(map(int, input().split())) for _ in range(n)]

def find(x, y, d):
    if g[x][y] == 0:
        g[x][y] = 2
    # 현재 위치 기준 왼쪽부터 탐색
    for i in range(1, 5):
        dir = (d - i) % 4
        nx, ny = x + dx[dir], y + dy[dir]
        if g[nx][ny] == 0:
            find(nx, ny, dir)
            return
    dir = (d+2)%4
    nx, ny = x + dx[dir], y + dy[dir]
    if g[nx][ny] == 1:
        return
    find(nx, ny, d) //방향 : 바라본 채로 유지하고 후진을 해서 바라본 방향에서 다시 탐색. dir은 후진 방향이다
        

find(rx, ry, d)

ans = 0
for i in range(n):
    for j in range(m):
        if g[i][j] == 2:
            ans += 1

print(*g, sep='\n')
print(ans)

0개의 댓글