[백준 Python] 17247번 택시 거리

iwtkmn_0219·2023년 1월 22일
0

백준 Python

목록 보기
23/32
post-thumbnail

백준 17247 택시 거리

문제


택시 거리는 바둑판 모양의 도로망을 가진 도시에서 점 A에서 B까지의 최단 거리를 구할 경우 도로를 따라서만 가는 가장 짧은 거리를 뜻한다.

위의 사진에서는 빨간색 선이 택시거리이다. 즉, 점 A의 좌표가 (x1, y1)이고 점 B의 좌표를 (x2, y2)라고 했을 때, 두 장소 사이의 택시 거리 D는 다음과 같다.

D=x2x1+y2y1D = |x_2 - x_1| + |y_2 - y1|

인접한 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))

>> iwtkmn0219의 Github <<

0개의 댓글