개발계발
프로그래머스 - 평행(120875) 본문
문제 설명
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 |