Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- class
- JavaScript
- Bull
- Nest.js
- MongoDB
- 게임
- AWS
- Python
- cookie
- mongoose
- Dinosaur
- nestjs
- dfs
- 자료구조
- Express
- typeORM
- flask
- react
- GIT
- Sequelize
- jest
- nodejs
- Queue
- 정렬
- 공룡게임
- TypeScript
- MySQL
- game
- OCR
Archives
- Today
- Total
포시코딩
[프로그래머스][Lv.0] 평행 - 작성중 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120875
내 풀이
# 주어진 두 좌표를 이은 선분들이 서로 평행인지 확인하려면
# 그 선분을 포함한 직선의 일차함수를 구해
# 서로의 기울기가 같으면 평행인 것을 활용하면 된다.
# y = ax + b라고 할 때, a는 기울기, b는 y절편이 되며
# 예시의 (1, 4), (3, 8)의 일차함수 y=2x+2와
# (9, 2), (11, 6)의 일차함수 y=2x-16의 기울기는 같으므로 평행이다.
# 두 좌표를 넣었을 때 기울기를 뱉는 함수를 만들어보자
def getSlope(e1, e2):
# 4 = 1a + b, e1[1] = e1[0] * a + b
# 8 = 3a + b, e2[1] = e2[0] * a + b
# b = 4 - 1a, b = e1[1] - (e1[0] * a)
# b = 8 - 3a, b = e2[1] - (e2[0] * a)
# 4 - 1a = 8 - 3a, e1[1] - (e1[0] * a) = e2[1] - (e2[0] * a)
# (3 - 1)a = 8 - 4, (e2[0] - e1[0]) * a = e2[1] - e1[1]
# a = 4/2, a = (e2[1] - e1[1]) / (e2[0] - e1[0])
return (e2[1] - e1[1]) / (e2[0] - e1[0])
# 평행인지 확인하는 법을 알았으니 어떤 좌표끼리 묶을지도 구해야 하는데
# 배열의 인덱스로만 묶는다면
# 0,1 / 2,3
# 0,2 / 1,3
# 0,3 / 1,2
# 이렇게 되야한다. 문제에서는 dots의 길이와 원소의 길이를 정해줬지만 추후 나올 더 어려운 난이도에선 그 제한도 없을수도 있으므로
# 어떻게 해야 겹치지 않게 비교할 수 있을지를 생각해야한다.
# 일단 수동으로 먼저 해보자
def solution(dots):
answer = 0
if getSlope(dots[0], dots[1]) == getSlope(dots[2], dots[3]):
answer = 1
if getSlope(dots[0], dots[2]) == getSlope(dots[1], dots[3]):
answer = 1
if getSlope(dots[0], dots[3]) == getSlope(dots[1], dots[2]):
answer = 1
return answer
위 코드를 통해 두 좌표 a, b의 일차함수 기울기 공식은
(b[1] - a[1]) / (b[0] - a[0])
라는 것을 알 수 있다.
주어진 과제는 일단 수동으로 하나하나 dots의 두 좌표끼리 묶어 비교했는데
dots의 길이가 길어질 경우를 생각해 발전해야한다.
좀 더 생각해보고 다른 사람 풀이를 보도록 하자
다른 풀이
ㅇ
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스][Lv.1] 핸드폰 번호 가리기 (0) | 2022.12.21 |
---|---|
[프로그래머스][Lv.0] [1차] 비밀지도 (0) | 2022.12.20 |
[프로그래머스][Lv.0] 안전지대 (0) | 2022.12.18 |
[프로그래머스][Lv.0] OX퀴즈 (0) | 2022.12.17 |
[프로그래머스][Lv.0] 분수의 덧셈 (0) | 2022.12.16 |