
-Code
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// x, y값을 각각 저장
int[] xPosArr = new int[n];
int[] yPosArr = new int[n];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
xPosArr[i] = x;
yPosArr[i] = y;
}
br.close();
// 각 위치 정보 오름차순 정렬
Arrays.sort(xPosArr);
Arrays.sort(yPosArr);
// 중앙값 저장
int midX = xPosArr[n / 2];
int midY = yPosArr[n / 2];
// 총 거리 계산
long answer = 0;
for (int i = 0; i < n; i++) {
answer += Math.abs(xPosArr[i] - midX);
answer += Math.abs(yPosArr[i] - midY);
}
System.out.println(answer);
}
}
처음에 최단 거리를 구하는 문제여서 모든 집을 다 방문하는 문제인 줄알고 BFS로 풀려다 이상해서 찾아보니 보니 모든 집에서 최단 거리로 잡을 수 있는 위치를 구하는 것이 었습니다. 그래서 x, y를 모두 저장 후 정렬해 중앙값을 가지고 총 거리를 계산해 보는 문제여서 이를 알고 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [goormlevel/Java] 가장 높은 점수 구하기 (0) | 2026.05.19 |
|---|---|
| [goormlevel/Java] Goorm Party 1 (0) | 2026.05.18 |
| [goormlevel/Java] 재참석자 수 세기 (0) | 2026.05.16 |
| [프로그래머스/Java] 혼자 놀기의 달인 (0) | 2026.05.15 |
| [프로그래머스/Java] 문자열 압축 (0) | 2026.05.14 |