코딩테스트

[프로그래머스] 평행 - Lv.0

pyflu 2023. 8. 13. 03:05

오늘은 프로그래머스 120875번 문제"평행" Lv.0파이썬으로 풀어보도록 하겠습니다.

[프로그래머스] 평행 Lv.0 - [파이썬/python]

 

프로그래머스-평행
프로그래머스-평행


💻 문제 설명

 

점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.

  • [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]

주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 반환(return) 하도록 solution 함수를 완성해보세요.

 


🚨 제한사항

 

  • dots의 길이 = 4
  • dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.
    • 0 ≤ x, y ≤ 100
  • 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.
  • 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.
  • 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다

🌈 힌트

 

더보기

1. 기울기 이해하기

두 점 사이의 기울기는 'y의 변화량 / x의 변화량’으로 계산됩니다. 즉, (y2 - y1) / (x2 - x1)입니다. 이 개념을 이해하는 것이 이 문제의 핵심입니다.

 

 

2. 평행선의 기울기

두 직선이 평행하려면 그들의 기울기가 같아야 합니다. 따라서 주어진 4개의 점을 두 개씩 나누어 각각의 기울기를 계산하고, 이들이 같은지 확인하면 됩니다.

 

 

3. 모든 가능한 조합 확인하기

주어진 4개의 점을 이용하여 만들 수 있는 직선의 조합은 총 3가지입니다. 모든 가능한 조합을 확인하여 평행한 직선 쌍이 있는지 확인해야 합니다.

 

 

4. 부동소수점 오차 처리

컴퓨터에서 소수를 표현할 때 발생하는 오차를 고려해야 할 수도 있습니다. 이 문제에서는 기울기가 정확히 같아야 하므로, 이 점을 고려하여 코드를 작성해야 합니다.


 

 




!!!정답 주의!!!




 

 

 


🌟 소스 코드

 

프로그래머스-평행-파이썬-코드
프로그래머스-평행-파이썬-코드

 

 

# 프로그래머스 | 평행
def solution(dots):
   
    #dots의 숫자를 직접 변수에 대입
    [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] = dots
   
    # 기울기가 같으면 평행
    # 기울기 = |(y2 - y1) / (x2 - x1)|
   
    # 선분 12, 선분 34
    gradient_12 = abs((y2 - y1) / (x2 - x1))
    gradient_34 = abs((y4 - y3) / (x4 - x3))
   
    # 선분 13, 선분 24
    gradient_13 = abs((y3 - y1) / (x3 - x1))
    gradient_24 = abs((y4 - y2) / (x4 - x2))
   
    # 선분23, 선분 14
    gradient_23 = abs((y3 - y2) / (x3 - x2))
    gradient_14 = abs((y4 - y1) / (x4 - x1))
   
    # 셋 중 하나라도 같으면 평행
    if gradient_12 == gradient_34 or gradient_23 == gradient_14 or gradient_13 == gradient_24:
        return 1
   
    return 0

 

 


🏳‍🌈 테스트 결과

 

프로그래머스-평행-상태
프로그래머스-평행-상태

 

프로그래머스-평행-테스트-결과
프로그래머스-평행-테스트-결과

728x90