문제풀이/기타
[파이썬] [큐] 백준 3190 뱀
승무_
2022. 5. 23. 17:42
문제
https://www.acmicpc.net/problem/3190
3190번: 뱀
'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임
www.acmicpc.net
코드
from collections import deque
n = int(input())
k = int(input())
apple = [list(map(int, input().split())) for _ in range(k)]
l = int(input())
dict = {}
for _ in range(l):
a, b = input().split()
dict[int(a)] = b
array = [[0] * (n + 1) for _ in range(n + 1)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def Rotate(i):
if i < 0:
return 3
elif i > 3:
return 0
else:
return i
for i in range(k):
a, b = apple[i]
array[a][b] = 2
def search():
queue = deque()
array[1][1] = 1
queue.append([1, 1])
s = 0
d = 1
nx, ny = 1, 1
while True:
s += 1
nx += dx[d]
ny += dy[d]
if nx < 1 or nx > n or ny < 1 or ny > n or array[nx][ny] == 1:
return s
if array[nx][ny] == 2:
queue.append([nx, ny])
array[nx][ny] = 1
if array[nx][ny] == 0:
queue.append([nx, ny])
array[nx][ny] = 1
rx, ry = queue.popleft()
array[rx][ry] = 0
if s in dict:
dire = dict[s]
if dire == 'L':
d = Rotate(d - 1)
else:
d = Rotate(d + 1)
print(search())