
🏷️문제
점 네 개의 좌표를 담은 이차원 배열  dots가 다음과 같이 매개변수로 주어집니다.
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 
주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.
🔎풀이
#기하학 알고리즘
- 기울기 계산
 - 모든 조합 확인
 
//기울기 비교(교차곱) 함수
const isParallel = (x1, y1, x2, y2, x3, y3, x4, y4) => {
    return (x2 - x1) * (y4 - y3) === (y2 - y1) * (x4 - x3)
}
function solution(dots) {    
    const [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]= dots
    
    //모든 조합
    return (
        isParallel(x1, y1, x2, y2, x3, y3, x4, y4) || //(2-1)===(4-3)
        isParallel(x2, y2, x1, y1, x3, y3, x4, y4) || //(1-2)===(4-3)
        isParallel(x1, y1, x2, y2, x4, y4, x3, y3) || //(2-1)===(3-4)
        isParallel(x1, y1, x4, y4, x2, y2, x3, y3) || //(4-1)===(3-2)
        isParallel(x4, y4, x1, y1, x2, y2, x3, y3) || //(1-4)===(3-2)
        isParallel(x1, y1, x3, y3, x2, y2, x4, y4) || //(3-1)===(4-2)
        isParallel(x3, y3, x1, y1, x2, y2, x4, y4) //(1-3)===(4-2)
           ) ? 1 : 0   
}
- 시간 복잡도: O(1)
- 고정 상수 dots
 
 
📌키워드
- 기울기 : (y2 - y1) / (x2 - x1)
 - 기울기 비교 = 교차 곱 = (y2 - y1) x (x4 - x3) === (x2 - x1) * (y4 - y3)
 
참고)
-
'알고리즘 > JavaScript' 카테고리의 다른 글
| [프로그래머스/JS] 분수의 덧셈 (0) | 2024.08.27 | 
|---|---|
| [JS] 몫 / 나머지 구하는 법 (feat. 정수) (0) | 2024.08.27 | 
| [프로그래머스/JS] 옹알이(1) (0) | 2024.08.27 | 
| [코테의정석/JS] 변수와 자료형 (0) | 2024.06.26 |