[BOJ] 2564. 경비원
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
Author And Source
이 문제에 관하여([BOJ] 2564. 경비원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gonzo/BOJ2564저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)