백준 7571번 : 점 모으기

M1ndCon·2024년 7월 14일
0

Algorithm

목록 보기
27/32

  • Solved.ac 기준 : 실버 1
  • 사용언어 C++

문제 해석 및 풀이

  • 여러 점들의 x와 y 좌표의 중앙값이 최단 이동거리 좌표가 됨
  • 해당 좌표와 각 점들의 거리를 구한 값을 모두 더해주면 됨
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

int main() {
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    int n, m;
    cin >> n >> m;

    vector<int> arrX(m);
    vector<int> arrY(m);

    for (int i = 0; i < m; i++) {
        cin >> arrX[i] >> arrY[i];
    }

    sort(arrX.begin(), arrX.end());
    sort(arrY.begin(), arrY.end());

    int midX = arrX[m / 2];
    int midY = arrY[m / 2];

    long long distance = 0;
    for (int i = 0; i < m; i++) {
        distance += abs(arrX[i] - midX) + abs(arrY[i] - midY);
    }

    cout << distance;

    return 0;
}
profile
게임 개발자 지망생

0개의 댓글