평행의 수학적 정의만 알 고 있으면 딱히 어려울 것 없는 문제(기울기를 구하는 프로시저를 따로 만들어 둠), dots배열에는 항상 데카르트 좌표계의 네개의 점에 대한 정보만 주어지기 때문에 네개의 점이 두 직선이 되는 경우의수는 세가지. comb를 리스트 객체로 하여금 요소들을 튜플로 주고 순서대로 0번째 첫번째를 한 직선 나머지를 나머지 직선으로 해서 세 경우를 for문을 통해 검사하도록 구현. for문이 돌아가다가 두 직선의 기울기가 같다면, 바로 1리턴. 만약 끝까지 for문이 돌아갔다면 두 직선의 기울기가 모든 경우에 대해서 다르다는 것이기 때문에 0 리턴.
def slope(l1, l2): #기울기 계산 프로시저
slp = ( l2[1] - l1[1] ) / ( l2[0] - l1[0] )
return slp
def solution(dots):
# 점 네개가 주어졌을 때 둘둘 조합이 나타날 경우의 수는 총 세가지다.
# 평행의 조건 : 두 직선의 기울기가 같다
comb = [(0,1,2,3),(0,2,1,3),(0,3,1,2)] # 세가지 경우의 수
for i in comb:
slp1 = slope(dots[i[0]], dots[i[1]])
slp2 = slope(dots[i[2]], dots[i[3]])
if slp1 == slp2:
return 1
return 0