https://blog.itcode.dev/posts/2021/06/09/a1007
[백준 / JAVA] 백준 알고리즘 1007번 벡터 - 𝝅번째 알파카의 개발 낙서장
평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속
blog.itcode.dev
좌표 (x1, y1), (x2, y2), (x3, y3), (x4, y4) 가 있으며, 좌표에서 두 벡터인 v1, v2를 구한다.
v1 = (x2-x1, y2-y1)
v2 = (x4-x3, y4-y3)
벡터의 합은 두 벡터의 단순합으로 이루어진다.
벡터의 총합 v는
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
static int[][] P;
static boolean[] positive;
static double min;
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while(T --> 0) {
int n = Integer.parseInt(br.readLine());
P = new int[n][2];
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());
P[i][0] = x; //x좌표
P[i][1] = y; //y좌표
}
positive = new boolean[n];
min = Double.MAX_VALUE;
combination(0, n/2); //n/2개의 양의 좌표를 구한다
System.out.println(min);
}
}
static void combination(int index, int cnt) {
if(index == P.length)
return;
if(cnt == 0) {
min = Math.min(min, getVector());
}
for(int i = index; i < P.length; i++) {
positive[i] = true; //양수 좌표 v = v1 + v2 = (x2+x4-x1-x3, y2+y2-y1-y3)
combination(i+1, cnt-1);
positive[i] = false;
}
}
static double getVector() {
double result = 0;
int sum_x = 0;
int sum_y = 0;
for(int i = 0; i < P.length; i++) {
if(positive[i]) {
sum_x += P[i][0];
sum_y += P[i][1];
}
else {
sum_x -= P[i][0];
sum_y -= P[i][1];
}
}
result = Math.sqrt(Math.pow(sum_x, 2) + Math.pow(sum_y, 2));
return result;
}
}
'백준' 카테고리의 다른 글
[백준] 12015 가장 긴 증가하는 부분 수열 2 [자바] (0) | 2022.08.29 |
---|---|
[백준] 1300 K번째 수 [자바] (0) | 2022.08.29 |
[백준] 1865 웜홀 [자바] (0) | 2022.07.11 |
[백준] 9465 스티커 [자바] (0) | 2022.06.21 |
[백준] 2096 내려가기 [자바] (0) | 2022.06.17 |