티스토리 뷰

https://www.acmicpc.net/problem/3190

 

3190번: 뱀

 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from collections import deque
 
 
go_dir = ((01), (10), (0-1), (-10))
dir = 0
time = 0
snake = deque()
snake.append((11))
= int(input())
graph = [[0* (n + 1for _ in range(n + 1)]
 
= int(input())
for _ in range(k):
    y, x = map(int, input().split())
    graph[y][x] = 2
 
 
def go():
    global time
    time += 1
    head = snake.pop()
    snake.append(head)
    y, x = head[0+ go_dir[dir][0], head[1+ go_dir[dir][1]
 
    if not 1 <= y <= n or not 1 <= x <= n or (y, x) in snake:
        print(time)
        exit()
    elif graph[y][x] == 2:
        snake.append((y, x))
        graph[y][x] = 0
    else:
        snake.append((y, x))
        snake.popleft()
 
 
= int(input())
for _ in range(l):
    a, c = input().split()
    a = int(a)
    repeat = a - time
    for _ in range(repeat):
        go()
 
    if c == 'L':
        dir = (dir + 3) % 4
    else:
        dir = (dir + 1) % 4
 
while True:
    go()
cs

그냥 구현하라는대로 구현하면 된다.

근데 그냥 문제의 설명이 빈약하다. 나도 헷갈려서 다른 질문 몇 개 살펴봤다.

힌트는 Deque 자료구조를 사용하는 것.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함