# 뱀
from collections import deque
n = int(input())
k = int(input())
apples = [ [0] * n for _ in range(n) ]
for _ in range(k) :
a, b = map(int, input().split())
apples[a - 1][b - 1] = 1
snake = deque()
snake.append((0,0))
l = int(input())
moving = []
for _ in range(l) :
moving.append(list(map(str, input().split())))
count = 0
dx = [-1, 0, 1, 0] # 상 우 하 좌
dy = [0, 1, 0, -1]
direction = 1
def turn(dir) :
global direction
if dir == 'D' :
if direction != 3 :
direction += 1
else :
direction = 0
else :
if direction != 0 :
direction -= 1
else :
direction = 3
return
a, b = 0, 0 # 머리
ta, tb = 0, 0 # 꼬리
breaker = False
start = 1
change = 0
# 벽에 부딪힐 때까지, 자기 몸에 부딪힐 때까지.
while True :
# 몸을 움직인다.
# 방향 전환
start = count + 1
for _ in range(start, int(moving[change][0]) + 1):
na = a + dx[direction]
nb = b + dy[direction]
if na >= n or na < 0 or nb >= n or nb < 0 or (na, nb) in snake:
count += 1
breaker = True
break
print(na, nb)
a = na
b = nb
if apples[a][b] == 1 :
apples[a][b] = 0
snake.append((a,b))
else :
snake.popleft()
snake.append((a,b))
count += 1
if breaker == True :
break
if change in moving.keys() :
turn(moving[change][1])
change += 1
print(count)
'코딩테스트' 카테고리의 다른 글
[5347] LCM (0) | 2024.02.20 |
---|---|
[20546] 기적의 매매법 (1) | 2024.01.31 |
[이코테] 무지의 먹방 라이브 (0) | 2024.01.24 |
[이코테] 볼링공 고르기 (0) | 2024.01.23 |
[이코테] 만들 수 없는 금액 (0) | 2024.01.19 |
댓글