택시 거리는 바둑판 모양의 도로망을 가진 도시에서 점 A에서 B까지의 최단 거리를 구할 경우 도로를 따라서만 가는 가장 짧은 거리를 뜻한다.
위의 사진에서는 빨간색 선이 택시거리이다. 즉, 점 A의 좌표가 (x1, y1)이고 점 B의 좌표를 (x2, y2)라고 했을 때, 두 장소 사이의 택시 거리 D는 다음과 같다.
인접한 0과 0, 0과 1, 1과 1 사이의 거리를 1이라고 할 때, 두 1 사이의 거리를 구하는 프로그램을 작성하시오.
첫 줄엔 문자열의 높이 N과 가로 M이 주어진다. (2 ≤ N, M ≤ 1,000) 이다.
두 번째 줄부터 M개의 숫자 0또는 1이 예제 입력과 같이 N개의 줄에 걸쳐 입력된다.
1는 항상 두 개만 입력된다.
주어진 숫자들에서 1과 1사이의 택시 거리를 구하시오.
간단히 입력받은 후 문제에서 언급한 택시거리를 계산한 후 출력하는 문제이다.
드디어 노트북 설정을 끝냈다. 설에 내려와서 대충 문제만 풀생각이었는데 귀찮음 3일치를 한번에 받은 느낌이었다. 미리 해둘걸..
def taxi_distance(x1: list, x2: list) -> int:
return abs(x1[0] - x2[0]) + abs(x1[1] - x2[1])
n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]
point_1 = [-1, -1]
point_2 = [-1, -1]
for i in range(n):
for j in range(m):
if board[i][j] == 1:
if point_1[0] == -1:
point_1[0] = i
point_1[1] = j
else:
point_2[0] = i
point_2[1] = j
print(taxi_distance(point_1, point_2))