넘치게 채우기

[LeetCode] 1232. Check If It Is a Straight Line 본문

PS/LeetCode

[LeetCode] 1232. Check If It Is a Straight Line

riveroverflow 2023. 6. 5. 09:53
728x90
반응형

https://leetcode.com/problems/check-if-it-is-a-straight-line/description/

 

Check If It Is a Straight Line - LeetCode

Can you solve this real interview question? Check If It Is a Straight Line - You are given an array coordinates, coordinates[i] = [x, y], where [x, y] represents the coordinate of a point. Check if these points make a straight line in the XY plane.    

leetcode.com

문제 유형 : 수학

문제 난이도 : Easy

 

문제

You are given an array coordinates, coordinates[i] = [x, y], where [x, y] represents the coordinate of a point. Check if these points make a straight line in the XY plane.

 

점들이 [x, y]로 주어진다. 이 점들을 이으면 직선이 되는지 구하여라.

 

풀이

처음 두 점의 기울기를 구할 때, 그를 표준으로 해준다. 

다음 기울기들을 구할때마다 표준 기울기와 비교해주면 된다.  dx == 0인 경우 예외처리를 해주자.

 

코드(C++)

class Solution {
public:
    bool checkStraightLine(vector<vector<int>>& coordinates) {
        double inclination = 0;
        double curr_inclination = 0;
        int INF = 1e9;
        
        for(int i = 0; i < coordinates.size()-1; i++){
            const double dx = coordinates[i][0] - coordinates[i+1][0];
            const double dy = coordinates[i][1] - coordinates[i+1][1];

            if(dx == 0){
                curr_inclination = INF;
            }
            else{
                curr_inclination = dy / dx;
            }

            if(i == 0) inclination = curr_inclination;

            if(inclination != curr_inclination) return false;
        }

        return true;
    }
};
728x90
반응형