[프로그래머스] 평행.JS

ungnam·2023년 6월 7일

programmers level0

목록 보기
20/29
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/120875

나의 풀이

function solution(dots) {
    let result = 0;
    // (x1, y1)는 기준점
    const datum = dots.shift();

    dots.forEach((v, i) => {
        const copies = [...dots];
        const dot1 = copies.splice(i, 1)[0];
        const [dot2, dot3] = copies;

        if ((datum[1]-dot1[1])/(datum[0]-dot1[0]) === (dot2[1]-dot3[1])/(dot2[0]-dot3[0])) {
            result = 1;
        }
    })
    return result;
}

4개의 점을 1, 2, 3, 4라고 하면
12vs34 / 13vs24 / 14vs23 -> 기울기를 비교할 수 있는 경우의 수는 총 3가지

✔ 첫번째 점을 기준점(datum)으로 잡고 나머지 점을 forEach로 순회 -> 기울기를 구하기 위해 datum과 함께 사용될 점을 splice

✔ 기울기 공식을 이용해서 두 선분의 기울기가 같으면 평행하는 것이므로 1을 리턴

참고할 만한 풀이

const solution = ([[x1, y1], [x2, y2], [x3, y3], [x4, y4]]) => {
    if((y1 - y2) / (x1 - x2) === (y3 - y4) / (x3 - x4)) return 1;
    if((y1 - y3) / (x1 - x3) === (y2 - y4) / (x2 - x4)) return 1;
    if((y1 - y4) / (x1 - x4) === (y2 - y3) / (x2 - x3)) return 1;
    return 0;
}

✔ 경우의 수도 3가지 밖에 없으니 아예 모든 경우를 나열해서 비교하는 것도 괜찮은 방법인 것 같다.

profile
꾸준함을 잃지 말자.

0개의 댓글