From 6ea3e618f77cf94d140d1a8af883217057bae432 Mon Sep 17 00:00:00 2001 From: Jonghwan Lee <123362165+0224LJH@users.noreply.github.com> Date: Wed, 29 Oct 2025 20:37:51 +0900 Subject: [PATCH] =?UTF-8?q?[20251029]=20BOJ/=20G5=20/=20=EC=A0=90=20?= =?UTF-8?q?=EB=AA=A8=EC=9C=BC=EA=B8=B0=20/=20=EC=9D=B4=EC=A2=85=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0 \353\252\250\354\234\274\352\270\260.md" | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 "0224LJH/202510/29 BOJ \354\240\220 \353\252\250\354\234\274\352\270\260.md" diff --git "a/0224LJH/202510/29 BOJ \354\240\220 \353\252\250\354\234\274\352\270\260.md" "b/0224LJH/202510/29 BOJ \354\240\220 \353\252\250\354\234\274\352\270\260.md" new file mode 100644 index 00000000..177a064e --- /dev/null +++ "b/0224LJH/202510/29 BOJ \354\240\220 \353\252\250\354\234\274\352\270\260.md" @@ -0,0 +1,87 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.PriorityQueue; +import java.util.StringTokenizer; + +public class Main { + + static int size, pointCnt,xIdx,yIdx; + static int[] xArr,yArr; + static long xSum, ySum,xCumul,yCumul, ansX, ansY; + + + public static void main(String[] args) throws IOException { + init(); + process(); + print(); + } + + private static void init() throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in));; + StringTokenizer st = new StringTokenizer(br.readLine()); + size = Integer.parseInt(st.nextToken()); + pointCnt = Integer.parseInt(st.nextToken()); + xIdx = 0; + yIdx = 0; + xSum = 0; + ySum = 0; + ansX = Long.MAX_VALUE; + ansY = Long.MAX_VALUE; + + xArr = new int[pointCnt]; + yArr = new int[pointCnt]; + + xCumul = 0; + yCumul = 0; + for (int i = 0; i < pointCnt; i++) { + st = new StringTokenizer(br.readLine()); + int y = Integer.parseInt(st.nextToken()); + int x = Integer.parseInt(st.nextToken()); + xSum += x; + ySum += y; + xArr[i] = x; + yArr[i] = y; + } + + + } + + private static void process() { + Arrays.sort(xArr); + Arrays.sort(yArr); + + int num = 1; + while(num <= size) { + long curSumX = 0; + long curSumY = 0; + while (xIdx < pointCnt && num >= xArr[xIdx]) { + xCumul += xArr[xIdx++]; + } + while (yIdx < pointCnt && num >= yArr[yIdx]) { + yCumul += yArr[yIdx++]; + } + + curSumX = num*xIdx - xCumul*2 + xSum - num * (pointCnt - xIdx); + curSumY = num*yIdx - yCumul*2 + ySum - num * (pointCnt - yIdx); + + ansX = Math.min(ansX, curSumX); + ansY = Math.min(ansY, curSumY); + num++; + } + } + + + + private static void print() { + System.out.println(ansY + ansX); + } +} + + +```