문제 설명
점 네개의 좌표를 담은 이차원 배열 dots 가 다음과 같이 매개변수로 주어집니다.
- [[x1,y1], [x2,y2], [x3,y3], [x4,y4]]
주어진 네 개의 점을 두개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한사항
dots의 길이 = 4
dots의 원소는 [x,y] 형태이며 x, y는 정수입니다.
0<= x, y <= 100
서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.
두 직선이 겹치는경우(일치하는 경우)에도 1을 return 해주세요.
임의의 두점을 이은 직선이 x축, 또는 y축과 평행한 경우는 주어지지 않습니다.
입출력 예
dots | result |
[[1, 4], [9, 2], [3, 8], [11, 6]] | 1 |
[[3, 5], [4, 1], [2, 4], [5, 10]] | 0 |
나는 각 점마다 a,b,c,d라고 생각하고 아래와 같이 만들었다.
function solution(dots) {
let answer = 0;
let x = [], y = [];
//a,b
x[0] = Math.abs(dots[0][0] - dots[1][0])
y[0] = Math.abs(dots[0][1] - dots[1][1])
//c,d
x[1] = Math.abs(dots[2][0] - dots[3][0])
y[1] = Math.abs(dots[2][1] - dots[3][1])
//a,c
x[2] = Math.abs(dots[0][0] - dots[2][0])
y[2] = Math.abs(dots[0][1] - dots[2][1])
//b,d
x[3] = Math.abs(dots[1][0] - dots[3][0])
y[3] = Math.abs(dots[1][1] - dots[3][1])
//a,d
x[4] = Math.abs(dots[0][0] - dots[3][0])
y[4] = Math.abs(dots[0][1] - dots[3][1])
//b,c
x[5] = Math.abs(dots[1][0] - dots[2][0])
y[5] = Math.abs(dots[1][1] - dots[2][1])
for(let i = 0; i < 6; i+=2){
if((x[i]==x[i+1])&&(y[i]==y[i+1])){
answer = 1;
}
}
return answer;
}
테스트결과는 통과했는데, 제출했을때 테스트1, 테스트10만 통과를 못했다.
어째서인지 좀더 봐야할거같다.
일단 같은선상에 있을때도 1을 반환해주라고 해서 아래 코드를 덧붙였다.
if(answer == 0){
for(let i = 0; i < 4; i++){
if(dots[i][0] == dots[i][1]){
answer = 1;
} else answer = 0;
}
}
그런데도 아직 통과하지 못했다.
다시 다 지우고 처음부터 생각해 봤다. 두 직선이 평행하려면 어떻게 해야하나. 그건 두 직선의 기울기가 같아야한다.
그래서 우선 기울기부터 구했다.
두 점의 직선 기울기 = (y2 - y1) / (x2 - x1)
그러고 나서 돌려보니 됐다.
function solution(dots) {
var answer = 0;
let x = [];
//a,b 기울기
x[0]=(dots[1][1]-dots[0][1])/(dots[1][0]-dots[0][0]);
//c,d 기울기
x[1]=(dots[3][1]-dots[2][1])/(dots[3][0]-dots[2][0]);
//a,c 기울기
x[2]=(dots[2][1]-dots[0][1])/(dots[2][0]-dots[0][0]);
//b,d 기울기
x[3]=(dots[3][1]-dots[1][1])/(dots[3][0]-dots[1][0]);
//a,d 기울기
x[4]=(dots[3][1]-dots[0][1])/(dots[3][0]-dots[0][0]);
//b,c 기울기
x[5]=(dots[2][1]-dots[1][1])/(dots[2][0]-dots[1][0]);
for(let i = 0; i < x.length; i+=2){
if(x[i]==x[i+1]) answer = 1;
}
return answer;
}
'프로그래머스 문제 풀이 > Lv.0 정답률 낮은 문제' 카테고리의 다른 글
배열 조각하기 (0) | 2023.05.04 |
---|---|
옹알이(1) (0) | 2023.05.04 |