3190 - 뱀
2022. 5. 3. 13:52ㆍ2022/BaekJoon_삼성 SW 역량 테스트 기출
from collections import deque
from copy import deepcopy
N = int(input())
board = [[0]*(N+1) for _ in range(N+1)]
K = int(input())
for _ in range(K):
x, y = map(int, input().split())
board[x][y] = 1
L = int(input())
timeList = []
direction = []
for _ in range(L):
X, C = map(str, input().split())
timeList.append(int(X))
direction.append(C)
changetime = timeList.pop(0); changeDir = direction.pop(0)
time = 0
startLoc = [1, 1]
snake = deque([[1, 1]])
# 우, 상, 좌, 하
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
idx = 0
# 자기 자신과 부딪히는 경우, 벽과 부딪히는 경우 둘다 고려
while snake:
if time == changetime:
#왼쪽
if changeDir == 'L':
idx = (idx-1)%4
else:
idx = (idx+1)%4
try:
changetime = timeList.pop(0); changeDir = direction.pop(0)
except:
pass
startLoc[0] += dx[idx]
startLoc[1] += dy[idx]
# 본인과 부딪히는 경우
if startLoc in snake:
time += 1
break
#벽에 부딪히는 경우
if startLoc[0]>N or startLoc[0]<1 or startLoc[1]>N or startLoc[1]<1:
time += 1
break
elif board[startLoc[0]][startLoc[1]] == 0:
snake.popleft()
snake.append(deepcopy(startLoc))
elif board[startLoc[0]][startLoc[1]] == 1:
board[startLoc[0]][startLoc[1]] = 0
snake.append(deepcopy(startLoc))
time += 1
print(time)
'2022 > BaekJoon_삼성 SW 역량 테스트 기출' 카테고리의 다른 글
14500 - 테트로미노* (0) | 2022.05.03 |
---|---|
13458 - 시험감독 (0) | 2022.05.03 |
13460 - 구슬탈출2* (0) | 2022.05.03 |
12100 - 2048(Easy)* (0) | 2022.05.03 |
14888번 - 연산자 끼워넣기* (0) | 2022.04.08 |