[ 문제 ]
점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.
- [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.
[ 제한사항 ]
- dots의 길이 = 4
- dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.
- 0 ≤ x, y ≤ 100
- 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.
- 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.
- 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.
[ 입출력 예 ]
dots | result |
[[1, 4], [9, 2], [3, 8], [11, 6]] | 1 |
[[3, 5], [4, 1], [2, 4], [5, 10]] | 0 |
< 입출력 예 #1 >
- 점 [1, 4], [3, 8]을 잇고 [9, 2], [11, 6]를 이으면 두 선분은 평행합니다.
< 입출력 예 #2 >
- 점을 어떻게 연결해도 평행하지 않습니다.
[ 해결 방법 ]
1. 연결된 각 직선의 기울기를 담는 변수 line1과 상대 기울기를 담는 변수 line2 선언
2. i와 j를 통해 전에 선택된 선택인지 확인하고 선택된 선택이라면 continue로 건너뛰고 선택되지 않으면 line1에 기울기 할당
3. m과 n을 통해 반복하여 민희진이 선택한 코디 제외하고 나머지 두 수의 기울기를 line2에 저장하면서 반복 진행
4. 만약 line1과 line2가 같다면 1반환, 아니면 0반환
[ solution.py ]
def solution(dots):
answer = []
line1 = 0
line2 = 0
for i in dots:
for j in dots:
if i == j:
continue
else:
line1 = (i[1] - j[1]) / (i[0] - j[0])
for m in dots:
if m == i or m == j:
continue
for n in dots:
if n == m or n == i or n == j:
continue
else:
line2 = (m[1] - n[1]) / (m[0] - n[0])
if line1 == line2:
return 1
return 0
> 🌻피드백은 언제나 환영입니다🌻 <
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[PROGRAMMERS] 달리기 경주 (LV. 1) - Python (1) | 2024.06.08 |
---|---|
[PROGRAMMERS] 분수의 덧셈 (LV. 0) - Python (0) | 2024.05.02 |
[PROGRAMMERS] OX퀴즈 (LV. 0) - Python (0) | 2024.05.02 |
[PROGRAMMERS] 최빈값 구하기 (LV. 0) -Python (0) | 2024.05.02 |
[PROGRAMMERS] 다항식 더하기 (LV. 0) - Python (0) | 2024.05.02 |