https://school.programmers.co.kr/learn/courses/30/lessons/120875
문제
점 네 개의 좌표를 담은 이차원 배열 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축과 평행한 경우는 주어지지 않습니다.
풀이
class Solution {
fun solution(dots: Array<IntArray>): Int {
if (((dots[0][0] - dots[1][0]) * (dots[2][1] - dots[3][1])) == ((dots[2][0] - dots[3][0]) * (dots[0][1] - dots[1][1]))) return 1
if (((dots[0][0] - dots[2][0]) * (dots[1][1] - dots[3][1])) == ((dots[1][0] - dots[3][0]) * (dots[0][1] - dots[2][1]))) return 1
if (((dots[0][0] - dots[3][0]) * (dots[1][1] - dots[2][1])) == ((dots[1][0] - dots[2][0]) * (dots[0][1] - dots[3][1]))) return 1
return 0
}
}
- 이문제는 기울기를 비교하여 기울기가 같은 경우 1을 반환해 주면 됩니다.
- (좌표 1의 y -좌표 2의 y)/(좌표 1의 x -좌표 2의 x)를 기울기라고 합니다.
- (좌표 1의 y -좌표 2의 y)/(좌표 1의 x -좌표 2의 x) == (좌표 3의 y -좌표 4의 y)/(좌표 3의 x -좌표 4의 x)를 만족한다면 1,2를 지나는 직선과 3,4를 지나는 직선이 평행하다는 것입니다. 여기서 주의해야 하는 점은 나누는 값이 0이면 안된다는 것입니다.
- 그렇다면 위식은 이렇게 바꿀수있습니다.
- (좌표 1의 y -좌표 2의 y)*(좌표 3의 x -좌표 4의 x) == (좌표 3의 y -좌표 4의 y)*(좌표 1의 x -좌표 2의 x) 이 로직을 이용하여 평행을 만족하는지를 검사하면 됩니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - [1차] 비밀지도 (Kotlin && JAVA) (0) | 2023.08.02 |
---|---|
[프로그래머스] - 문자열 내 마음대로 정렬하기 (Kotlin) (0) | 2023.08.02 |
[프로그래머스] - 안전지대(Kotlin) (0) | 2023.08.01 |
[프로그래머스] - 캐릭터의 좌표(Kotlin) (0) | 2023.08.01 |
[프로그래머스] - 겹치는 선분의 길이(Kotlin) (0) | 2023.07.31 |