import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
   static int[][] location;
   static boolean[] check;
   static int N;
   static long min;
    public static void main(String[] args) throws Exception{
      // TODO Auto-generated method stub

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      
      int T;
      T=Integer.parseInt(br.readLine());
      
      StringBuilder sb = new StringBuilder();
      StringTokenizer st;
      
      for(int test_case = 1; test_case <= T; test_case++)
      {
    	  N = Integer.parseInt(br.readLine());
    	  location = new int[N][2]; //지렁이 위치
    	  
    	  for(int i =0; i<N; i++) {
    		  st = new StringTokenizer(br.readLine()," ");
    		  location[i][0]=Integer.parseInt(st.nextToken());
    		  location[i][1]=Integer.parseInt(st.nextToken());
    	  }
    	  check = new boolean[N];
    	  
    	  min= Long.MAX_VALUE;
    	  make(0, 0);
    	  
    	  sb.append("#"+test_case+" "+min).append('\n');
      }
      System.out.print(sb);
   }
    public static void make(int cnt, int start) {
    	if(cnt == N/2) {
			min = Math.min(vectorPlus(),min);
			return;
		}
		for(int i=start; i<N; i++) {
			if(check[i] == false) {
				check[i] = true;
				make(cnt+1,i+1);
				check[i] = false;
			}
		}
	}
    static long vectorPlus() {
    	long dx = 0, dy = 0;
		for (int i=0; i <N; i++) {
			if (check[i] == true) {
				dx += location[i][0];
				dy += location[i][1];
			}
			else {
				dx -= location[i][0];
				dy -= location[i][1];
			}
		}
		return (dx*dx)+(dy*dy);
    }
}

 

지렁이 두마리씩 짝 짓기~

(내 짝도 ..😂)

 

난 벡터 성질을 몰랐다 ... 진짜 기억도 안나 옛날엔 알았나? ㅎ ㅎ ..

 

두 점 (x1,y1), (x2,y2) 가 있으면

(x1-x2, y1-x2) 

 

따라서 true 인 애가 (x1,y1)

false인 애가(x2,y2)

 

그러니깐 .. 조합(make())에선 (x1,y1)가 될 애들을 뽑아준거죠(방문)~

그래서 cnt == N/2 가 종료조건 !

 

true인 애를 더해주고 false 인 애를 빼주면

dx = x1-x2

dy = x2-y2

 

각 지렁이들이 움직인 벡터를 합하여 그 크기가 최소가 되도록 하는 문제이므로

 

저렇게 다 계산해준 다음(누적)

 

dx*dx + dy*dy 해주어서 벡터의 크기를 구하는 문제였다 .. (┬┬﹏┬┬)

 

근데 사실 아직도 내가 제대로 이해한건지 모르겠삼  맞나요? 내 머리 이해좀 해봐 .. 일하라고~

 

 

 

 

 

 

 

 

'NOTE > SWEA' 카테고리의 다른 글

13038. 교환학생 - d3  (0) 2022.06.11
10761. 신뢰 - d3  (0) 2022.06.11
9778. 카드 게임 - d3  (0) 2022.06.10
7102. 준홍이의 카드놀이 - d3  (0) 2022.06.10
14361. 숫자가 같은 배수 -d3  (0) 2022.06.10

+ Recent posts