Programmers_LV0_평행

jkky98·2023년 3월 27일
0

CodingTraining

목록 보기
21/56


평행의 수학적 정의만 알 고 있으면 딱히 어려울 것 없는 문제(기울기를 구하는 프로시저를 따로 만들어 둠), 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
profile
a personal blog

0개의 댓글