728x90
코딩 테스트 연습 21일
프로그래머스, 평행
📄 나의 코드
dots = [[1, 4], [9, 2], [3, 8], [11, 6]]
def solution(dots):
answer = 0
x1 = dots[0][0]
x2 = dots[1][0]
x3 = dots[2][0]
x4 = dots[3][0]
y1 = dots[0][1]
y2 = dots[1][1]
y3 = dots[2][1]
y4 = dots[3][1]
if (y1 - y2) / (x1 - x2) == (y3 - y4) / (x3 - x4):
answer = 1
if (y1 - y3) / (x1 - x3) == (y2 - y4) / (x2 - x4):
answer = 1
if (y1 - y4) / (x1 - x4) == (y2 - y3) / (x2 - x3):
answer = 1
return answer
print(solution(dots))
문제 조합의 경우의 수가 3가지 밖에 없기 때문에 이렇게 설계했는데,
반복되는 코드가 많아 좋은 코드 같지 않다.ㅠ
📄 공부할 만한 코드
def solution(dots):
answer = 0
if gradient(dots[0],dots[1]) == gradient(dots[2],dots[3]):
return 1
elif gradient(dots[0],dots[2]) == gradient(dots[1],dots[3]):
return 1
elif gradient(dots[0],dots[3]) == gradient(dots[1],dots[2]):
return 1
else:
return 0
return answer
def gradient(point_1, point_2):
x1,y1 = point_1
x2,y2 = point_2
if x1 == x2:
return 999
return (y2-y1)/(x2-x1)
📄 공부할 만한 코드
from itertools import combinations
def solution(dots):
a = []
for (x1,y1),(x2,y2) in combinations(dots,2):
a.append((y2-y1,x2-x1))
for (x1,y1),(x2,y2) in combinations(a,2):
if x1*y2==x2*y1:
return 1
return 0
'알고리즘' 카테고리의 다른 글
코딩 테스트 연습 27일 (0) | 2022.12.27 |
---|---|
코딩 테스트 연습 22일,23일,26일 (0) | 2022.12.26 |
코딩 테스트 연습 20일 (0) | 2022.12.20 |
코딩 테스트 연습 19일 (0) | 2022.12.19 |
코딩 테스트 연습 15일&16일 (0) | 2022.12.16 |