[lv.0] 평행 | 프로그래머스
[lv.0] 평행 | 프로그래머스
📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)
✏️ (lv.0) : 평행
점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어진다.
- [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하라.
- 0 <= dots의 원소(정수) <= 100
- dots.length = 4, dots의 원소 길이 = 2
- x, y가 겹치는 경우는 없다.
- 두 직선이 겹치는 경우에도 1을 return한다.
- x축, y축과 평행한 경우는 없다.
주어진 좌표중 두 쌍의 기울기가 일치할 경우 평행하므로 기울기를 이용해 solution을 작성한다.
두 점의 좌표를 알고 있으므로 기울기 m = y2-y1 /x2-x1 이다.
중복을 피하기 위해 1/2로 쌍을 이룰 경우 3/4를, 1/3으로 쌍을 이룰 경우 2/4를, 1/4로 쌍을 이룰 경우 2/3을 비교한다.
1 | // 최초로 제출한 solution |
2 | function solution(dots) { |
3 | let m = [0,0,0]; |
4 | let dotsCase = [ |
5 | (dots[3][1] - dots[2][1]) / (dots[3][0] - dots[2][0]), |
6 | (dots[3][1] - dots[1][1]) / (dots[3][0] - dots[1][0]), |
7 | (dots[2][1] - dots[1][1]) / (dots[2][0] - dots[1][0]), |
8 | ]; |
9 | |
10 | for (i=1; i<4; i++) { |
11 | m[i-1] = (dots[i][1] - dots[0][1]) / (dots[i][0] - dots[0][0]); |
12 | } |
13 | |
14 | if (m[0] == dotsCase[0]) { |
15 | return 1; |
16 | } else if (m[1] == dotsCase[1]) { |
17 | return 1; |
18 | } else if (m[2] == dotsCase[2]) { |
19 | return 1; |
20 | } else { |
21 | return 0; |
22 | } |
23 | } |
24 | |
25 | // 개선된 solution |
26 | function otherSolution(dots) { |
27 | const leans = [] |
28 | |
29 | // 이중배열의 각 원소를 dotA, dotB로 나누어 관리하면 더 편하다. |
30 | for(let i = 0; i < dots.length; i++) { |
31 | const dotA = dots[i]; |
32 | for(let j = i + 1; j < dots.length; j++) { |
33 | const dotB = dots[j] |
34 | const lean = (dotB[1] - dotA[1]) / (dotB[0] - dotA[0]) |
35 | |
36 | if(leans.includes(lean)) return 1 |
37 | else leans.push(lean) |
38 | } |
39 | } |
40 | |
41 | return 0; |
42 | } |
# 프로그래머스
# JS
# javascript
# 코딩테스트
# 알고리즘
# 이중배열
👨💻 관련 포스트
[lv.1] 개인정보 수집 유효기간
[lv.1] 개인정보 수집 유효기간
프로그래머스 lv.1 개인정보 수집 유효기간 풀이 with javascript. 해당 문제에서 한달은 28일로 고정이다. 따라서 today와 privacies 각 원소(개인정보)의 날짜를 년, 월, 일에 각 단위에 해당하는 수 * 28을 수행하여 일 단위로 변환한 후 terms에 해당하는 수를 더해 문제를 해결한다.
2023-05-30
[lv.1] 성격 유형 검사하기 | 프로그래머스
[lv.1] 성격 유형 검사하기 | 프로그래머스
프로그래머스 lv.1 성격 유형 검사하기 풀이 with javascript. javascript의 객체를 이용해 성격 유형(이하 MBTI)별 획득 점수를 기록하고 MBTI의 value를 비교해 문제를 해결한다.
2023-06-01
[lv.2] 주차 요금 계산 | 프로그래머스
[lv.2] 주차 요금 계산 | 프로그래머스
프로그래머스 lv.2 주차 요금 계산 풀이 with javascript. javascript의 객체를 이용해 차량의 입/출차 시간을 기록, 해당 객체를 순회하며 주차시간을 주어진 요금표에 맞게 정산하는 것으로 문제를 해결한다.
2023-06-04
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!