1 minute read

평행

문제 설명

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

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

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


제한사항

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

입출력 예

dots result
[[1, 4], [9, 2], [3, 8], [11, 6]] 1
[[3, 5], [4, 1], [2, 4], [5, 10]] 0

입출력 예 설명

입출력 예 #1

  • 점 [1, 4], [3, 8]을 잇고 [9, 2], [11, 6]를 이으면 두 선분은 평행합니다.

입출력 예 #2

  • 점을 어떻게 연결해도 평행하지 않습니다.

나의 풀이 코드

테스트 케이스 12번부터 17번까지 자꾸 오류가 떠서 시간을 너무 많이 소비하였다. 찾아보니 문제 자체가 엉성하다고 한다. 일단 통과되는 다른 사람의 코드로 통과하였다.

배운점

class Solution {
    public int solution(int[][] dots) {
        int answer = 0;
        for(int i =0; i<dots.length;i++) {

                float temp =gradient(dots[i],dots[(i+1)%4]);
                float temp2 =gradient(dots[(i+2)%4],dots[(i+3)%4]);

                if(temp==temp2) {
                    answer = 1;
                }
        }
        return answer;
    }
    public static float gradient(int[]a1,int[]a2) {
        float denom,mole;

            denom= a1[0]-a2[0];
            mole= a1[1]-a2[1];

        return mole/denom;
    }
}

기울기 구하는 메서드를 구현후,
평행인지 아닌지를 반복문 안에서 비교한다.

Leave a comment