문제 출처 : www.acmicpc.net/problem/3190
문제 해석 : 뱀이 사과를 먹으면 몸의 길이가 늘어나며 경로를 따라 움직입니다. 자신의 몸이나 벽에 부딪히면 게임이 끝나며 이때 시간을 출력합니다.
문제 풀이 : 구현 문제로서 문제에서 제시하는 조건들을 모두 만족시키게 차근차근 풀이를 진행하면 풀 수 있습니다.
풀이 코드
N = int(input())
K = int(input())
board = [[0] * N for _ in range(N)]
for _ in range(K):
r, c = map(int, input().split())
board[r-1][c-1] = 2
L = int(input())
snake = []
for _ in range(L):
snake.append(input().split())
x,y = 0, 0
snake_direction = 0
tail = []
tail.append([0,0])
dx = [0,1,0,-1]
dy = [1,0,-1,0]
board[0][0] = 1
time = 0
while True:
if len(snake) != 0:
if time == int(snake[0][0]):
D = snake.pop(0)[1]
if D == "D":
snake_direction = ( snake_direction + 1 ) % 4
else:
snake_direction = (snake_direction - 1) % 4
nx = x + dx[snake_direction]
ny = y + dy[snake_direction]
if nx < 0 or ny < 0 or nx >= N or ny >= N or board[nx][ny] == 1:
time += 1
break
else:
if board[nx][ny] == 2:
board[nx][ny] = 1
tail.append([nx, ny])
else:
t_x, t_y = tail.pop(0)
board[t_x][t_y] = 0
board[nx][ny] = 1
tail.append([nx,ny])
x,y = nx, ny
time += 1
print(time)
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 1260 DFS와 BFS 문제 풀이 (0) | 2021.01.08 |
---|---|
[알고리즘][Python] 백준 1107 리모컨 문제 풀이 (0) | 2021.01.08 |
[알고리즘][Python] 백준 15686 치킨 배달 문제 풀이 (0) | 2021.01.07 |
[알고리즘][Python] 백준 18406 럭키 스트레이트 문제 풀이 (0) | 2021.01.02 |
[알고리즘][Python] 백준 1439 뒤집기 문제 풀이 (0) | 2021.01.02 |