코딩테스트/BOJ

[BOJ] 1064 평행사변형 - JAVA

5월._. 2022. 6. 21.
728x90

1. 문제

 

1064번: 평행사변형

평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC) 이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나

www.acmicpc.net

평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC)
이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나올 수도 있다.
만들어진 모든 사각형 중 가장 큰 둘레 길이와 가장 작은 둘레 길이의 차이를 출력하는 프로그램을 작성하시오. 만약 만들 수 있는 평행사변형이 없다면 -1을 출력한다.


2. 풀이

1.  세 점이 일직선을 이루는 경우는 -1을 출력한다.

2.  AB 길이, BC 길이, CA길이를 모두 구한다. 

3.  세 선분 중 가장 큰 선분, 가장 작은 선분의 차를 이용해 답을 출력한다. 둘레의 길이이므로 *2를 해야한다.

import java.io.*;
import java.util.*;

public class BOJ_1064_평행사변형 {
   public static void main(String[] args) throws IOException {
      StringTokenizer st = new StringTokenizer(new BufferedReader(new InputStreamReader(System.in)).readLine());
      int[] points = new int[6];
      for(int i=0;i<6;i++) points[i] = Integer.parseInt(st.nextToken());

      if((points[2]-points[0])*(points[5]-points[1])==(points[4]-points[0])*(points[3]-points[1])){
         System.out.println(-1);
         return;
      }

      double ab = getLength(points[0],points[1],points[2],points[3]);
      double bc = getLength(points[2],points[3],points[4],points[5]);
      double ca = getLength(points[4],points[5],points[0],points[1]);

      double max = Math.max(ab,Math.max(bc,ca));
      double min = Math.min(ab,Math.min(bc,ca));

      System.out.println(2*(max-min));

   }
   public static double getLength(double x1, double y1, double x2, double y2){
      return Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
   }
}

3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 1141 접두사 - JAVA  (0) 2022.06.23
[BOJ] 1059 좋은 구간 - JAVA  (0) 2022.06.22
[BOJ] 1057 토너먼트 - JAVA  (0) 2022.06.20
[BOJ] 1246 온라인 판매 - JAVA  (0) 2022.06.19
[BOJ] 1206 사람의 수 - JAVA  (0) 2022.06.17

댓글