C++/알고리즘

맨해튼 거리(Manhattan Distance)

머슬머슬가이 2025. 8. 22. 01:34

맨해튼 거리란?

맨해튼 거리는 두 점 사이의 가로세로 이동 거리만을 고려해 계산하는 방식이다.
도시 블록처럼 격자 구조에서 직선이 아닌, “블록 따라 이동하는 거리”를 수학적으로 표현한 개념이다.

 

공식 표현

두 점 A(x₁, y₁), B(x₂, y₂)가 있을 때:

 
맨해튼 거리 = |x₁ − x₂| + |y₁ − y₂|

즉, x 좌표 차이의 절대값과 y 좌표 차이의 절대값을 더해 거리를 구한다.

 

예를 들어, A(2, 3) → B(5, 1)인 경우,

  • |2 − 5| = 3 (가로 이동)
  • |3 − 1| = 2 (세로 이동)
  • 총 거리 = 3 + 2 = 5

맨허튼 거리는 게임 (타일 기반 거리)와 알고리즘 (휴리스틱, 탐색)에 주로 사용된다.

#include <iostream>
#include <cmath>

using namespace std;

int main() 
{
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;

    int dist = abs(x1 - x2) + abs(y1 - y2);
    
    cout << "맨해튼 거리: " << dist << endl;

    return 0;
}



 

 

'C++ > 알고리즘' 카테고리의 다른 글

소수 구하기  (4) 2025.07.16
이항 계수  (0) 2025.04.05
유클리드 호제법  (0) 2025.04.05
계수 정렬  (0) 2025.04.05