흙금이네 블로그

[BOJ] 3190 - 뱀 (Python) 본문

알고리즘

[BOJ] 3190 - 뱀 (Python)

흙금 2023. 3. 20. 00:57

 

 

아이디어

 

큐에 뱀이 차지하는 칸의 정보를 저장하고, 2차원 리스트에 보드의 상태를 저장한다.

 

 

풀이

 

import sys

input = sys.stdin.readline

delta = [(0, 1), (1, 0), (0, -1), (-1, 0)]

def solution():
    N = int(input())
    K = int(input())
    board = [[0]*(N+1) for _ in range(N+1)]
    for _ in range(K):
        r, c = map(int, input().split())
        board[r][c] = 2
    turn = dict()
    L = int(input())
    for _ in range(L):
        X, C = input().split()
        turn[int(X)] = -1 if C == 'L' else 1
    sneak = [(1, 1)]
    board[1][1] = 1
    d = 0
    res = r = c = 1
    while 1:
        dr, dc = delta[d]
        nr, nc = r+dr, c+dc
        if N >= nr > 0 and N >= c+dc > 0:
            if board[nr][nc] == 0:
                board[nr][nc] = 1
                sneak.append((nr, nc))
                r2, c2 = sneak.pop(0)
                board[r2][c2] = 0
            elif board[nr][nc] == 2:
                board[nr][nc] = 1
                sneak.append((nr, nc))
            else:
                break
        else:
            break
        r, c = nr, nc
        d = (d+turn.get(res, 0))%4
        res += 1
    print(res)

solution()

 

Comments