반응형
1. 문제
(x, y) 좌표로 구성된 배열 coordinates가 주어진다.
coordinates의 점들이 한 직선에 위치하는지 검사하면 되는 문제다.
2. 풀이 과정
두 점이 주어졌을 때 직선의 방정식을 이용해서 식을 세운 뒤 각 점들이 식을 성립시키는지 검사하면 된다.
배열의 첫 점과 끝점으로 식을 만든 뒤 배열을 순회하면서 식에 대입했을 때 식이 성립하는지 확인한다.
그런데 조금 귀찮은 부분이 있는데, 위 식은 기울기의 분모인 x2 - x1 가 0이 아니라는 조건이 붙기 때문에 코드 작성 시 예외처리가 조금 필요해진다.
그래서 분모를 이항시켜서 식에서 나눗셈을 없앤 뒤 코드에 적용하기로 했다.
보기 편하려고 x2 - x1과 y2 - y1을 각 t와 s로 치환하여 사용했다.
public class Solution {
public bool CheckStraightLine(int[][] coordinates) {
var length = coordinates.Length;
var y1 = coordinates[0][1];
var x1 = coordinates[0][0];
var s = coordinates[length - 1][1] - y1;
var t = coordinates[length - 1][0] - x1;
for(int i = 1; i < length - 1; ++i)
{
if((coordinates[i][1] - y1) * t != (coordinates[i][0] - x1) * s)
{
return false;
}
}
return true;
}
}
반응형
'LeetCode 풀이노트' 카테고리의 다른 글
[C#] 1318. Minimum Flips to Make a OR b Equal to c (0) | 2023.06.07 |
---|---|
[C#] 1502. Can Make Arithmetic Progression From Sequence (0) | 2023.06.06 |
[C#] 1376. Time Needed to Inform All Employees (0) | 2023.06.03 |
[C#] 1091. Shortest Path in Binary Matrix (0) | 2023.06.01 |
[C#] 1396. Design Underground System (0) | 2023.05.31 |