유형
구현
풀이
현재 파이썬 연습중.
너무~ 편한듯 싶다.
자료구조
- 초마다 다음 방향: 딕셔너리
- 사과의 위치: 2차원 리스트
- 뱀의 꼬리: 덱
코드
from collections import deque
N = int(input())
K = int(input())
apple = []
for _ in range(K):
r, c = map(int, input().split())
apple.append((r-1, c-1))
L = int(input())
dir = {}
for _ in range(L):
t, spin = map(str, input().split())
dir[int(t)] =spin
d = [[-1,0], [0,1], [1,0], [0,-1]]
time = 0
curD = 1
curR = 0
curC = 0
answer = 0
map = [[0]*N for _ in range(N)]
map[0][0] = 1
next_dir = {'D': 1, 'L': -1}
snake = deque()
snake.append((0,0))
while(True):
# 앞으로 이동
nr = curR+d[curD][0]
nc = curC+d[curD][1]
time += 1
if nr<0 or nr>=N or nc<0 or nc>=N or map[nr][nc] == 1:
answer = time
break;
map[nr][nc] = 1# 머리 이동
snake.append((nr, nc))
# 사과 존재여부
if (nr, nc) in apple:
apple.remove((nr, nc))
else:
tail = snake.popleft()
map[tail[0]][tail[1]] = 0
# 다음 방향
if time in dir:
curD += next_dir[dir[time]]
if curD<0:
curD=3
elif curD>3:
curD=0
curR = nr
curC = nc
print(answer)
코드
'알고리즘 > 백준' 카테고리의 다른 글
백준 17609 - (python)회문 (0) | 2021.05.01 |
---|---|
백준 13901 - (python) 로봇 (0) | 2021.04.28 |
20055 - [Java]컨베이어 벨트 위의 로봇 (0) | 2021.04.21 |
20057 - 마법사 상어와 토네이도 (0) | 2021.04.18 |
백준 - 6087 레이저 통신 (0) | 2021.03.13 |