코린이의 소소한 공부노트

[프로그래머스/Lv.0] 평행 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 평행

무지맘 2022. 11. 9. 21:10

1. Input

1) 점 네 개의 좌표를 담은 2차원 배열 dots

2) dots의 구성: {{x1, y1}, {x2, y2}, {x3, y3}, {x4, y4}}

 

2. Output

1) 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 반환

 

3. Constraint

1) 0 dots의 원소 100

2) dots의 길이 = 4

3) dots의 원소의 길이 = 2

4) dots의 원소는 [x, y] 형태이며 x, y는 정수

5) 서로 다른 두개 이상의 점이 겹치는 경우는 없다.

6) 두 직선이 겹치는 경우(일치하는 경우)에도 1을 반환

7) 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않는다.

 

4. Example

Input: dots={{1,4},{9,2},{3,8},{11,6}} -> Output: 1

설명:

{1,4},{3,8}을 이은 직선과 {9,2},{11,6}을 이은 직선이 평행이다.

 

5. Code

1) 첫 코드(2022/11/02)

// 짝짓는 경우는 총 6가지
// (0,1) (0,2) (0,3) (1,2) (1,3) (2,3)과
// (2,3) (1,3) (1,2) (0,3) (0,2) (0,1)이 짝이 됨
// (0,1) (0,2) (0,3) (1,2) (1,3) (2,3)의 기울기를 구해서
// 0번째==5번째, 1번째==4번째, 2번째==3번째인지 확인

int answer = 0;
double[] a = new double[6];
int index = 0;
for(int i=0 ; i<dots.length-1 ; i++){
    for(int j=i+1 ; j<dots.length ; j++){
        a[index++] = (double)(dots[i][1]-dots[j][1])/(dots[i][0]-dots[j][0]);
    } // for j
} // for i
for(int i=0 ; i<a.length/2 ; i++)
    if(a[i]==a[a.length-1-i]){
        answer = 1;
        break;
    }
return answer;