https://school.programmers.co.kr/learn/courses/30/lessons/120875?language=python3
풀이 - 나의 생각
점이 4개 밖에 없으니까
페어를 이룰 수 있는 경우를 모두 확인해서
평행인 경우가 있는지 찾으면 됩니다.
평행인 경우를 아는 방법은
점들이 주어졌을 때, 네 점을 이루는 모든 선분 쌍을 구성하여 기울기를 비교할 수 있습니다.
벡터 (x1,y1)과 (x2,y2)가 주어졌을 때, 두 벡터가 평행하려면 다음 조건이 성립해야 합니다.
x1 * y2 = x2 * y1
페어의 벡터 성분을 구한 후 위의 수식을 대입하면
평행하는지 알 수 있습니다.
밑의 코드는 리스트에 할당하는 방식이 처음 보는 방식이라 가져와 봤습니다.
비구조화 할당
1. 튜플/리스트 비구조화 할당
# 튜플 비구조화 할당
numbers = (1, 2, 3)
a, b, c = numbers
print(a) # 1
print(b) # 2
print(c) # 3
2. 딕셔너리 비구조화 할당
# 딕셔너리에서 값 추출
person = {"name": "Alice", "age": 25}
name = person["name"]
age = person["age"]
print(name) # Alice
print(age) # 25
코드
def solution(dots):
pairs = [
(0, 1, 2, 3),
(0, 2, 1, 3),
(0, 3, 1, 2)
]
for a, b, c, d in pairs:
# 각 쌍의 벡터 성분을 계산
x1, y1 = dots[a][0] - dots[b][0], dots[a][1] - dots[b][1]
x2, y2 = dots[c][0] - dots[d][0], dots[c][1] - dots[d][1]
# 평행한지 비교: x1 * y2 == x2 * y1
if x1 * y2 == x2 * y1:
return 1
`
return 0
#Destructuring ,비구조화 할당, 구조분해
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
728x90
'프로그래머스 > Lv.0' 카테고리의 다른 글
문자 개수 세기 - Python, ord (0) | 2024.11.24 |
---|---|
캐릭터의 좌표 - Python, 구현 (1) | 2024.11.13 |
안전지대 - Python, 구현, set (0) | 2024.11.13 |
최빈값 구하기 - Python, Counter (0) | 2024.11.11 |
등수 매기기 - Pyton, sorted (1) | 2024.11.10 |