본문 바로가기

알고리즘

코딩 테스트 연습 21일

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