[BOJ] 3190 뱀 - Python
2021. 7. 19. 17:56ㆍProgramming/Problem Solving
728x90
문제링크
간단한 구현문제였다.
따로 bfs 같은 건 사용하지 않고, 무한루프 안에서 탈출 조건을 만들어주고 구현하였다.
N = int(input())
K = int(input())
board = [[0]*(N+1) for i in range(N+1)]
dy = [1,-1,0,0]
dx = [0,0,1,-1]
for _ in range(K):
x, y = map(int, input().split())
board[x][y] = 1
L = int(input())
cmd = [0]*10010
for _ in range(L):
x,c = map(str, input().split())
cmd[int(x)] = c
snake_x, snake_y, dir = 1,1,0
board[snake_x][snake_y] = 9
snake = [[snake_x, snake_y]]
tail_x, tail_y = 1,1
time = 0
while True:
snake_x = snake_x + dx[dir]
snake_y = snake_y + dy[dir]
time += 1
if snake_x < 1 or snake_y < 1 or snake_x >N or snake_y > N or board[snake_x][snake_y] == 9:
break
if board[snake_x][snake_y] == 1:
board[snake_x][snake_y] = 9
snake.append([snake_x, snake_y])
else:
board[snake_x][snake_y] = 9
snake.append([snake_x, snake_y])
temp_x, temp_y = map(int, snake.pop(0))
board[temp_x][temp_y] = 0
if cmd[time] != 0:
if dir == 0:
if cmd[time] == 'L':
dir = 3
else:
dir = 2
elif dir == 1:
if cmd[time] == 'L':
dir = 2
else:
dir = 3
elif dir == 2:
if cmd[time] == 'L':
dir = 0
else:
dir = 1
elif dir == 3:
if cmd[time] == 'L':
dir = 1
else:
dir = 0
print(time)
'Programming > Problem Solving' 카테고리의 다른 글
[Programmers] 110 옮기기 (0) | 2021.07.25 |
---|---|
[BOJ] 20057 마법사 상어와 토네이도 - Python (0) | 2021.07.22 |
[BOJ] 20061 모노미노도미노 - Python (0) | 2021.07.21 |
[BOJ] 18809 Gaaaaaaaaaarden - Python (0) | 2021.07.20 |
[BOJ] 5373 큐빙 - C++ (0) | 2021.07.19 |