[백준] 14503번 로봇 청소기 (Python)

고승우·2023년 4월 5일
1

알고리즘

목록 보기
48/86
post-thumbnail

백준 14503 로봇 청소기

단순 구현 문제였지만 작은 실수 하나로 1시간동안 삽질했다. 방향을 결정하는 dy, dx 리스트를 잘못 선언했다. -1의 값을 줘야 해당 grid에서 위쪽으로 이동한다는 것을 망각하지 말자.

  • 북: 0, 동: 1, 남: 2, 서: 3
  • dx = [0, 1, 0, -1]
  • dy = [-1, 0, 1, 0]
import sys

input = sys.stdin.readline
dx = [0, 1, 0, -1]
dy = [-1, 0, 1, 0]
grid = []

n, m = map(int, input().split())
rY, rX, dir = map(int, input().split())
for _ in range(n):
    grid.append(list(map(int, input().split())))
cnt = 0

while True:
    if grid[rY][rX] == 0:
        grid[rY][rX] = 2
        cnt += 1
    clean = True
    for i in range(4):
        tmpY = rY + dy[i]
        tmpX = rX + dx[i]
        if grid[tmpY][tmpX] == 0:
            clean = False
            break
    if clean:
        rY += dy[(dir + 2) % 4]
        rX += dx[(dir + 2) % 4]
        if grid[rY][rX] == 1:
            print(cnt)
            break
    else:
        dir = (dir + 3) % 4
        tmpY = rY + dy[dir]
        tmpX = rX + dx[dir]
        if grid[tmpY][tmpX] == 0:
            rY = tmpY
            rX = tmpX
profile
٩( ᐛ )و 

0개의 댓글