자료구조, 알고리즘
프로그래머스 스쿨 코딩테스트 입문: 평행
수수 아보카도
2022. 12. 22. 17:51
네 개의 점이 주어졌을 때 두 점씩 이은 두 직선이 평행이 되는 경우가 있는지 알아보는 문제.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
첫번째 풀이방법으로는 기울기를 a로 두고 기울기가 같은 애가 있는지 알아봤다.
def solution(dots):
ang = []
for i in range(3):
for j in range (i+1, 4):
x= dots[i][0] - dots[j][0]
y= dots[i][1] - dots[j][1]
a = y/x if x!=0 else -1
if a not in ang:
ang.append(a)
else:
return 1
return 0
두번째 풀이방법으로는 combinations이라는 함수를 사용해서 for문의 범위에 combinations를 사용했다.
각각 두 점의 조합을 만들어서 a의 배열에 더해준 다음, 이 a 조합에서 기울기가 같은 애들이 있는지 확인한다.
from itertools import combinations
def solution(dots):
a = []
for (x1,y1),(x2,y2) in combinations(dots,2):
a.append((y2-y1,x2-x1))
print(a)
for (x1,y1),(x2,y2) in combinations(a,2):
if x1*y2 == x2*y1:
return 1
return 0