오늘은 프로그래머스 120875번 문제인 "평행" Lv.0을 파이썬으로 풀어보도록 하겠습니다.
[프로그래머스] 평행 Lv.0 - [파이썬/python]
💻 문제 설명
점 네 개의 좌표를 담은 이차원 배열 dots
가 다음과 같이 매개변수로 주어집니다.
- [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 반환(return) 하도록 solution 함수를 완성해보세요.
🚨 제한사항
dots
의 길이 = 4dots
의 원소는 [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
'코딩테스트' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 - Lv.2 (18) | 2023.08.13 |
---|---|
[프로그래머스] 최댓값과 최솟값 - Lv.2 (21) | 2023.08.13 |
[프로그래머스] 정수를 나선형으로 배치하기 - Lv.0 (24) | 2023.08.13 |
[프로그래머스] 개인정보 수집 유효기간 - Lv.1 (3) | 2023.08.11 |
[프로그래머스] 옹알이 (2) - Lv.1 (0) | 2023.08.11 |