아이디어 : x, y축과 평행한 경우는 없고. 4개의 점을 두개씩 이으니까 4C2=6가지의 경우만 살펴보면 될 것 같다.
x값을 뺀 것, 그리고 y값을 뺀것의 절댓값을 이용하면 될 것 같은데... 그 값의 비율을 보면 될 것 같다.
def solution(dots):
answer = 0
for i in range(len(dots)-1):
for j in range(i+1, len(dots)):
idx_list = [0,1,2,3]
idx_list.remove(i)
idx_list.remove(j)
if abs(dots[i][1]-dots[j][1])/abs(dots[i][0]-dots[j][0]) == abs(dots[idx_list[0]][1]-dots[idx_list[1]][1])/abs(dots[idx_list[0]][0]-dots[idx_list[1]][0]):
answer=1
return answer
+ 250818
def solution(dots):
answer = 0
# 3번만 조합하면 됨 - 평행이려면 x랑 y 움직이는 간격이 비례해야
if (dots[0][0]-dots[1][0])%(dots[2][0]-dots[3][0])==0 and (dots[0][1]-dots[1][1])%(dots[2][1]-dots[3][1])==0:
return 1
if (dots[0][0]-dots[2][0])%(dots[1][0]-dots[3][0])==0 and (dots[0][1]-dots[2][1])%(dots[1][1]-dots[3][1])==0:
return 1
if (dots[0][0]-dots[3][0])%(dots[2][0]-dots[1][0])==0 and (dots[0][1]-dots[3][1])%(dots[2][1]-dots[1][1])==0:
return 1
return 0
왜 틀렸을까? 지금 식은 x는 x, y는 y로 볼 뿐 두 개를 함께 고려하지 않았다.
def solution(dots):
answer = 0
# 6번만 조합하면 됨 - 평행이려면 x랑 y 움직이는 간격이 비례해야
if (dots[0][0]-dots[1][0])/(dots[0][1]-dots[1][1]) == (dots[2][0]-dots[3][0])/(dots[2][1]-dots[3][1]):
return 1
if (dots[0][0]-dots[2][0])/(dots[0][1]-dots[2][1]) ==(dots[1][0]-dots[3][0])/(dots[1][1]-dots[3][1]):
return 1
if (dots[0][0]-dots[3][0])/(dots[0][1]-dots[3][1]) == (dots[2][0]-dots[1][0])/(dots[2][1]-dots[1][1]):
return 1
return 0
'✨ 공부 기록 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
| [프로그래머스 lv 0] 안전지대 (코딩테스트 입문) 2️⃣ (0) | 2025.03.04 |
|---|---|
| [프로그래머스 lv 0] 분수의 덧셈 (코딩테스트 입문)_Fraction 사용 (0) | 2025.03.04 |
| [프로그래머스 lv 0] 옹알이 (1) (코딩테스트 입문) 2️⃣ (0) | 2025.03.04 |
| [프로그래머스 lv 1] K번째수 (정렬) (0) | 2025.03.03 |
| [프로그래머스 lv 2] 구명보트 (탐욕법(Greedy)) (0) | 2025.03.03 |