Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발계발

프로그래머스 - 평행(120875) 본문

알고리즘

프로그래머스 - 평행(120875)

Ju_Nik_E 2024. 4. 19. 09:59

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/120875

제한사항

처음 접근 방식(틀린 코드)

한 점으로부터 다른 모든 점에 선을 연결하고 모든 기울기를 비교
def solution(dots):
    answer = 0
    inclination = []
    for i in range(3):
        for j in range(i+1, 4):
            tmp = abs((dots[j][1] - dots[i][1])) / abs((dots[j][0] - dots[i][0]))
            if tmp in inclination:
                answer = 1
                break
            inclination.append(tmp)
        
    return answer

 

-> 코드 실행 시 2가지 test case는 통과하나, 채점했을 때 12~17이 틀린다.

틀린 이유

문제를 잘 읽어보면 주어진 "네 개의 점을 두 개씩 이었을 때, 두 직선이 평행"이라고 돼있다.
즉, 한 점에서 모든 점에 연결을 하는 게 아니라 두 개의 점씩 총 두 직선씩 비교하라는 뜻

 

맞춘 코드

def solution(dots):
    case1_1 = abs(dots[0][1] - dots[1][1]) / abs(dots[0][0] - dots[1][0])
    case1_2 = abs(dots[3][1] - dots[2][1]) / abs(dots[3][0] - dots[2][0])
    if case1_1 == case1_2:
        return 1
    
    case2_1 = abs(dots[0][1] - dots[2][1]) / abs(dots[0][0] - dots[2][0])
    case2_2 = abs(dots[3][1] - dots[1][1]) / abs(dots[3][0] - dots[1][0])
    if case2_1 == case2_2:
        return 1
    
    case3_1 = abs(dots[0][1] - dots[3][1]) / abs(dots[0][0] - dots[3][0])
    case3_2 = abs(dots[2][1] - dots[1][1]) / abs(dots[2][0] - dots[1][0])
    if case3_1 == case3_2:
        return 1
        
    return 0

 

 

 

'알고리즘' 카테고리의 다른 글

프로그래머스 - 분수의 덧셈(120808)  (0) 2024.04.23
프로그래머스 - 다항식 더하기(120863)  (0) 2024.04.23
프로그래머스 - 특이한 정렬(120880)  (0) 2024.04.23
스택과 큐  (0) 2024.03.28
검색 알고리즘  (1) 2024.03.27