posted by 코딩 공부중 2020. 9. 18. 15:35

코딩테스트 문제를 풀던 중 맨하튼거리 계산을 이용해 푸는 문제가 있어서 푸는 김에 정리

 

맨하튼 거리

맨해튼 거리는  d1과 벡터  p,q 사이에 차원 실수를 직교 좌표계에 일정한 좌표축의 점 위에 투영한 선분 길이의 합을 말함 간단하게 정리하면 각 차원의 절대값을 합산하는 방식

빨간색, 파란색, 노란색 선은 길이가 12로 같으며, 유클리드 거리와 맨해튼 거리 양쪽 모두 가지고 있다. 유클리드 기하학의 경우 초록색 선의 길이는 6×√2 ≈ 8.48로, 선들 가운데 유일하게 길이가 가장 짧으며, 맨해튼 거리의 경우 파란색 선의 길이는 12로, 이보다 길이가 더 짧은 선은 없다. (위키백과)

(x1,y1,z1)과 (x2,y2,z2)사이의 거리 계산 공식 : |x1 - x2| + |y1 - y2| + |z1 - z2|

 

자바로 구현

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class manhattan {
 
    public static void main(String[] args) {
        double[] a = {1,2,3};
        double[] b = {4,5,6};
        
        calManhattanDist(a,b);
 
    }
    
    public static void calManhattanDist(double[] a, double[] b){
        
        double sum = 0;
        
        for(int i=0; i < a.length; i++) {
            
            sum= sum + Math.abs(a[i]-b[i]);
        }
    
        System.out.println(sum);
    
    }
 
}
cs

 

참고 : 위키백과

'자료구조,알고리즘' 카테고리의 다른 글

(자료구조)merge sort 예제  (0) 2020.04.17
(자료구조)heap  (0) 2020.04.17
색인순차검색  (0) 2020.01.03
(알고리즘) sum of subset 문제해결  (0) 2019.02.11
(알고리즘)m-coloring 문제해결  (0) 2019.02.11