코딩테스트/Programmers_LV0

Programmers_JAVA_평행

wn1331 2022. 11. 28. 19:45
반응형

문제 설명

점 네 개의 좌표를 담은 이차원 배열  dots가 다음과 같이 매개변수로 주어집니다.

  • [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]

주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 0 ≤ dots의 원소 ≤ 100
  • dots의 길이 = 4
  • dots의 원소의 길이 = 2
  • dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.
  • 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.
  • 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.
  • 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.

dots의 길이가 4로 고정되어 있으면, 기울기 배열의 크기는 6이다. (1번째와 2번째 비교, 3번째 비교, 4번째 비교, 2번째와 3번째, 4번째 비교, 3번째와 4번째 비교)

기울기 개수만큼을 배열의 길이로 inclination 배열을 생성.

2중 for문을 사용해서 dots의 요소끼리 전부 비교해서 기울기를 순차적으로 inclination에 대입한다.

그 후에 inclination에서 중복된 값이 있는지 없는지를 체크. 있으면 1 반환 없으면 0 반환.

class Solution {
    public int solution(int[][] dots) {
        double[] inclination = new double[6];
        int count = 0;
        for(int i = 0; i<dots.length;i++){
            for(int j = i+1;j<dots.length;j++){
                double inc_x = dots[i][0]-dots[j][0];
                double inc_y = dots[i][1]-dots[j][1];
                inclination[count++] = inc_y/inc_x;
            }
        }
        for(int i = 0; i<inclination.length;i++){
            for(int j = i+1;j<inclination.length;j++){
                if(inclination[i]==inclination[j]){
                    return 1;
                }
            }
        }
        return 0;
    }
}

 

 

반응형