3190 문제 보러가기
문제는 이러하다
3190 문제 중점 사항
deque()
를 만든다dq.appendleft()
를 해준다.dq.pop()
을 시켜 맨 뒤에 있는 좌표를 pop
시켜준다'L'
일때는 반시계 방향으로 회전, 'R'
일떄는 시계 방향으로 회전함으로 dx=[-1,0,1,0]
dy=[0,1,0,-1]
d=1 #맨 처음 시작은 오른쪽을 향함 dx[1],dy[1] -> (0,1)
if rotate[0][1]=='L':
d=(d+3)%4
else:
d=(d+1)%4
rotate.pop(0)
이렇게 회전 방향을 업데이트 해주는 것이 중요한 것 같다!import sys
input=sys.stdin.readline
from collections import deque
n=int(input())
k=int(input())
board=[[0]*n for _ in range(n)]
for i in range(k):
a,b=map(int, input().split())
board[a-1][b-1]=1
L=int(input())
rotate=[]
res=0
dx=[-1,0,1,0]
dy=[0,1,0,-1]
d=1
for i in range(L):
x,c=input().rstrip().split()
rotate.append((x,c))
snake=deque()
snake.append((0,0))
while True:
if len(rotate)!=0 and int(rotate[0][0])==res:
if rotate[0][1]=='L':
d=(d+3)%4
else:
d=(d+1)%4
rotate.pop(0)
res+=1
x,y=snake[0][0], snake[0][1]
xx, yy=x+dx[d], y+dy[d]
if xx<0 or yy<0 or xx>=n or yy>=n or (xx,yy) in snake:
print(res)
sys.exit()
elif 0<=xx<n and 0<=yy<n and board[xx][yy]==1 :
board[xx][yy]=0
snake.appendleft((xx,yy))
elif 0<=xx<n and 0<=yy<n and board[xx][yy]==0 :
snake.appendleft((xx,yy))
snake.pop()