이번 문제는 방문 처리를 진행하며 주어진 순서대로 계속해서 로봇을 움직이도록 하는 문제였다. 처음에는 문제를 제대로 읽지 않아, 주어진 방향 순서로만 이동하고 프로그램을 종료하도록 작성하여 오답 처리를 받았다. 문제를 다시 읽어보니 더 이상 움직일 수 없을 때까지 반복해야 하기 때문에 무한 루프 안에서 해결해야 했다. 종료 조건에 대해 생각하다가, 4 방향을 모두 확인했을 때, 더 이상 갈 수 있는 방향이 없을 경우 종료하도록 하였다.
r, c = map(int, input().split())
k = int(input())
grid = [['*' for _ in range(c)] for _ in range(r)]
for _ in range(k):
a, b = map(int, input().split())
grid[a][b] = 'x'
robot = list(map(int, input().split()))
grid[robot[0]][robot[1]] = '0'
commands = list(map(int, input().split()))
for i in range(len(commands)):
commands[i] -= 1
dy, dx=[-1, 1, 0, 0], [0, 0, -1, 1]
def move(d):
global robot
while True:
ny, nx = robot[0] + dy[d], robot[1] + dx[d]
if 0 <= ny < r and 0 <= nx < c and grid[ny][nx] == '*':
robot = [ny, nx]
grid[ny][nx] = '0'
else:
break
idx = 0
while True:
move(commands[idx])
idx = (idx + 1) % 4
cnt = 0
for i in range(4):
ny, nx = robot[0] + dy[i], robot[1] + dx[i]
if 0 <= ny < r and 0 <= nx < c and grid[ny][nx] == '*':
cnt += 1
if not cnt:
break
print(*robot)