99클럽 코테 스터디 13일차 TIL + 아이템 줍기

히치키치·2024년 6월 1일
0

항해99코테스터디

목록 보기
7/13
from collections import deque

dr=[-1,1,0,0]
dc=[0,0,-1,1]

def draw(graph,c1,r1,c2,r2):
    for r in range(r1, r2+1):
        for c in range(c1,c2+1):
            ## 테두리 좌표 && 다른 도형의 안쪽 아님 
            if (r1==r or r==r2 or c1==c or c==c2) and graph[r][c]!=0:
                graph[r][c]=1
            else:
                graph[r][c]=0
    return graph
  
def bfs(start, end,board):
    n = len(board)
    que = deque()
    que.append(start)
    while que:
        r,c = que.popleft()
        if [r,c]==end:
            print([r,c],end,board[r][c]//2)
        
            return board[r][c]//2
        for idx in range(4):
            nr, nc = r+dr[idx],c+dc[idx]
            ## 범위에 있고 테두리 최초 방문인 경우    
            if 0<=nr<n and 0<=nc<n and board[nr][nc]==1:
                que.append([nr, nc])
                board[nr][nc]=board[r][c]+1


def solution(rectangle, characterX, characterY, itemX, itemY):
    n = 51 * 2
    board = [[-1 for _ in range(n)] for _ in range(n)]
    for c1,r1,c2,r2 in rectangle:
        board = draw(board, 2*c1,2*r1,2*c2,2*r2)
    print(board[2*characterX][2*characterY])
    answer = bfs([2*characterY,2*characterX],[2*itemY,2*itemX], board)
    return answer

0개의 댓글