https://school.programmers.co.kr/learn/courses/30/lessons/120875
나의 코드
기울기 구하는 함수 두고 매 케이스 기울기 비교하는 방식으로 짰는데
def solution(dots):
answer = 0
if incline(dots[0], dots[1]) == incline(dots[2], dots[3]):
return 1
if incline(dots[0], dots[2]) == incline(dots[1], dots[3]):
return 1
if incline(dots[0], dots[3]) == incline(dots[1], dots[2]):
return 1
return answer
def incline(li1, li2):
return (li1[1] - li2[1]) / (li1[0] - li2[0])
타 풀이 코드
분명 더 효율적인 방법이 있을 텐데.. 하고 보니 이런게 있었고
combination으로 저렇게 받아올 수 있구나 싶어서 파이썬 짱이다.. 했다
돌려봤는데 통과를 못했다...
from itertools import combinations
def solution(dots):
li = []
for (x1,y1),(x2,y2) in combinations(dots,2):
li.append((y2-y1,x2-x1))
for (dy1,dx1),(dy2,dx2) in combinations(li,2):
if dy1*dx2==dy2*dx1:
return 1
return 0
combination으로 받아오는 dots 들이 1, 2 이면 남은 3, 4와 비교해야하는데 여기서 1, 2 와 1, 3 을 비교하는 식으로 중복 체크가 없다보니 케이스 몇개를 통과 못한듯 하다
이런거 보면.. 그냥 구현 그자체가 실수하는 케이스 잡아내기 쉬운거 같긴한데
이런 방법조차도 잘해내야..!!!!
근데 나누기보다 곱하기가 더 효율적인가? 에러의 여지가 더 많나 왜 많이들 기울기 식 그대로 나누기 안하고 곱하기 해서 하나..
요것도 좋았다.
분화만이 답은 아닌것을...
def solution(dots):
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] = dots
answer1 = (y1 - y2) * (x3 - x4) == (y3 - y4) * (x1 - x2)
answer2 = (y1 - y3) * (x2 - x4) == (y2 - y4) * (x1 - x3)
answer3 = (y1 - y4) * (x2 - x3) == (y2 - y3) * (x1 - x4)
return 1 if answer1 or answer2 or answer3 else 0
'코테 공부 > python' 카테고리의 다른 글
[프로그래머스] Python 겹치는 선분의 길이 (0) | 2023.06.09 |
---|---|
[백준] #9372 Python 코테 스터디 -상근이의 여행 (그래프) (0) | 2023.06.09 |
[프로그래머스] Python 안전지대 / set.update(set) / zip() (0) | 2023.06.07 |
Python 외계어 사전, 요소 제거하면서 for문을 돌리면.. (0) | 2023.06.07 |
Python and or not 연산자 (0) | 2023.06.06 |