728x90
<문제 링크>
https://www.acmicpc.net/problem/3190
<문제 풀이>
1. 사과 있는 곳은 1로 표시
2. 방향 지정 함수 만들기
3. q를 사용하여 뱀의 위치 저장. 사과가 없을 때 가장 왼쪽 좌표 제거하면 도미
4. 벽이나 뱀의 몸통과 부딪혔다면 종료
<코드>
n = int(input())
k = int(input())
data = [[0]*(n+1) for _ in range(n+1)]
info = []
for _ in range(k):
a,b = map(int,input().split())
data[a][b] = 1
l = int(input())
for _ in range(l):
x,c = input().split()
info.append((int(x),c))
dx = [0,1,0,-1]
dy = [1,0,-1,0]
def turn(direction,c):
if c=="L":
direction = (direction-1)%4
else:
direction = (direction+1)%4
return direction
def simulate():
x,y = 1,1
data[x][y] = 2
direction = 0
time = 0
index = 0
q = [(x,y)]
while True:
nx = x+dx[direction]
ny = y+dy[direction]
if 1<=nx and nx<=n and 1<=ny and ny<=n and data[nx][ny]!=2:
if data[nx][ny] = 0:
data[nx][ny] = 2
q.append((nx,ny))
px,py = q.pop(0)
data[px][py] = 0
if data[nx][ny] == 1:
data[nx][ny] = 2
q.append((nx,ny))
else:
time += 1
break
x,y = nx,ny
time += 1
if index<l and time==info[index][0]:
direciton = turn(direction, info[index[1])
index += 1
return time
print(simulate())
'''
6
3
3 4
2 5
5 3
3
3 D
15 L
17 D
10
4
1 2
1 3
1 4
1 5
4
8 D
10 D
11 D
13 L
10
5
1 5
1 3
1 2
1 6
1 7
4
8 D
10 D
11 D
13 L
'''
#220325
n = int(input())
k = int(input())
graph = [[0]*(n) for i in range(n)]
for i in range(k):
x,y = map(int,input().split())
graph[x-1][y-1] = 1
l = int(input())
snake = []
for i in range(l):
snake.append(input().split())
def direction(d,x,y):
if d=='R':
return x,y+1
elif d=='L':
return x,y-1
elif d=='U':
return x-1,y
elif d=='D':
return x+1,y
x,y = 0,0
d = 'R'
answer = 0
idx = 0
graph[x][y] = 9
while True:
xx,yy = direction(d, x, y)
if xx>=0 and yy>=0 and xx<n and yy<n:
answer += 1
if graph[xx][yy] == 0:
graph[x][y] = 0
x,y = xx,yy
elif graph[x][y]==9:
break
graph[xx][yy] = 9
if idx<l and int(snake[idx][0])==answer:
d = snake[idx][1]
idx += 1
else:
break
<고쳐야 할 점>
- 뱀 꼬리가 삭제되는 거 주의,,,
- 복습 알고리즘
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[BFS] 백준 14502번 '연구소' (Python) (0) | 2022.03.28 |
---|---|
[구현] 백준 15686번 '치킨 배달' (Python) (0) | 2022.03.26 |
[구현] 난이도2, 이취코 118p '게임 개발' (Python) (0) | 2022.03.25 |
[동적계획법] 난이도1.5, Goldman Sachs 인터뷰 '편집 거리' (Python) (0) | 2022.03.25 |
[동적계획법] 백준 18353번 '병사 배치하기' (Python) (0) | 2022.03.24 |