반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120875
🐍파이썬
def solution(dots):
if (dots[0][1] - dots[1][1]) / (dots[0][0] - dots[1][0]) == (dots[2][1] - dots[3][1]) / (dots[2][0] - dots[3][0]) or (dots[0][1] - dots[2][1]) / (dots[0][0] - dots[2][0]) == (dots[1][1] - dots[3][1]) / (dots[1][0] - dots[3][0]) or (dots[0][1] - dots[3][1]) / (dots[0][0] - dots[3][0]) == (dots[1][1] - dots[2][1]) / (dots[1][0] - dots[2][0]):
return 1
return 0
평행인 직선은 기울기가 동일하다.
직선의 기울기 = (y2 - y1) / (x2 - x1) (y축 증가량 / x축 증가량)
4가지 직선이므로 3가지 조합, 즉 인덱스 0, 1 / 2, 3 ➕ 0, 2 / 1, 3 ➕ 0, 3 / 1, 2 이 세 가지 조합의 기울기를 구하고, 두 직선의 기울기가 동일하면 1을, 그렇지 않으면 0을 리턴하도록 하였다.
다른 풀이 방법
def solution(dots):
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]]=dots
# 인덱스 1, 2 y축 증가량 * 인덱스 3, 4 x축 증가량 == 인덱스 3, 4 y축 증가량 * 인덱스 1, 2 x축 증가량
answer1 = ((y1-y2)*(x3-x4) == (y3-y4)*(x1-x2))
answer2 = ((y1-y3)*(x2-x4) == (y2-y4)*(x1-x3))
answer3 = ((y1-y4)*(x2-x3) == (y2-y3)*(x1-x4))
#answer1,2,3 중 하나라도 1이면 1리턴, 아니면 0리턴
return 1 if answer1 or answer2 or answer3 else 0
🐥자바스크립트
function solution(dots) {
return (dots[0][1] - dots[1][1]) / (dots[0][0] - dots[1][0]) == (dots[2][1] - dots[3][1]) / (dots[2][0] - dots[3][0]) || (dots[0][1] - dots[2][1]) / (dots[0][0] - dots[2][0]) == (dots[1][1] - dots[3][1]) / (dots[1][0] - dots[3][0]) || (dots[0][1] - dots[3][1]) / (dots[0][0] - dots[3][0]) == (dots[1][1] - dots[2][1]) / (dots[1][0] - dots[2][0]) ? 1 : 0;
}
파이썬 풀이와 동일하게 직선의 기울기를 이용하여 풀고 삼항연산자를 사용해 1 또는 0을 리턴했다.
다른 풀이 방법
function solution(dots) {
if (calculateSlope(dots[0], dots[1]) === calculateSlope(dots[2], dots[3]))
return 1;
if (calculateSlope(dots[0], dots[2]) === calculateSlope(dots[1], dots[3]))
return 1;
if (calculateSlope(dots[0], dots[3]) === calculateSlope(dots[1], dots[2]))
return 1;
return 0;
}
function calculateSlope(arr1, arr2) {
return (arr2[1] - arr1[1]) / (arr2[0] - arr1[0]);
}
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS)/level 2) (0) | 2023.04.02 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 스킬트리(Summer/Winter Coding(~2018) / level 2) (0) | 2023.04.02 |
[프로그래머스 | 파이썬 / 자바스크립트] 추억 점수(연습문제 / level 1) (0) | 2023.03.31 |
[프로그래머스 | 파이썬 / 자바스크립트] 다리를 지나는 트럭(스택/큐 / level 2) (0) | 2023.03.16 |
[프로그래머스 | 파이썬 / 자바스크립트] [3차] 파일명 정렬(2018 KAKAO BLIND RECRUITMENT / level 2) (0) | 2023.03.15 |
[프로그래머스 | 파이썬 / 자바스크립트] 덧칠하기(연습문제 / level 2) (0) | 2023.03.12 |