본문 바로가기
알고리즘 문제/Java

[goormlevel/Java] 모임 장소 1

by 현장 2026. 5. 17.

-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를 모두 저장 후 정렬해 중앙값을 가지고 총 거리를 계산해 보는 문제여서 이를 알고 해결했습니다.