[BOJ] 2564. 경비원

1491 단어 algorithmbojalgorithm

🚩

IDEA

가로, 세로 입력되는 수를 행과 열로 갖는 2차원 배열을 만들고 0으로 초기화시킨 다음, 동근이의 위치를 시작점으로 해서 초기 좌표 설정하면?
block[x][y] = 맨 마지막에 입력받은 값해서 초기 좌표로 설정할 수 있지 않을까??
그리고 delta 이동 사용해서 목표 지점까지 1을 채우면서 이동하고, 그 이동 거리를 하나의 []로 정리한 후 최솟값을 찾으면 그게 최단 거리가 될 것이라고 예상함. 그리고 이 때 한 목표지점을 찾으면(총 3개의 타겟 지점이 있으므로) 그 최단 거리는 따로 빼 놓고 해당 리스트는 초기화시켜서 새로운 최단 거리를 찾는 여정을 떠나야 함. 그리고 코드 종료

x, y = list(map(int, input().split()))
block = [list(0 for _ in range(x)) for _ in range(y)]
stores = int(input())
dx = [0, -1, 0, 1]
dy = [-1, 0, 1, 0]
for _ in range(1, stores):
    # 상점 위치 좌표 입력 받아 오기
    locx, locy = list(map(int, input().split()))
    # 시작 좌표 입력 받아 오기
    stx, sty = list(map(int, input().split()))
    # 모든 경로 리스트에 넣은 후 최단 거리(최소값) 출력
    route = []
    for d in range(4):
        nx = stx + dx[d]
        ny = sty + dy[d]
        if nx > x or ny > y :
            break
        else:
            # nx랑 ny가 목표 지점까지 가면서 좌표가 변할 때마다 0에서 1로 해당 값을 바꾸고 리스트에 추가
            # nx랑 ny가 상점의 위치 좌표와 동일해지면 해당 좌표를 리스트에 추가한 후 리스트의 길이를 출력(=경로 길이)
            if nx == locx and ny == locy:
                route.append((nx,ny))
                print(len(route))
                pass
            #그렇지 않은 경우에는 계속 진행함
            else:
                continue

좋은 웹페이지 즐겨찾기