본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 812. Largest Triangle Area

반응형

https://leetcode.com/problems/largest-triangle-area/description/

📕 풀이방법

사선공식을 이용해 3점에 대해 삼각형 면적을 구할 수 있습니다

📔 입력 및 초기화

정답변수 maxArea 를 선언 후 0으로 초기화해줍니다.

📔 풀이과정

점 3개의 좌표를 알고 있다면 사선공식을 사용해 삼각형 면적을 구할 수 있으므로 3차원 for loop를 수행하며 최대 삼각형 면적을 구해 maxArea

📔 정답 출력 | 반환

maxArea를 반환합니다.


📕 Code

📔 C++

struct Point {
    int x,y;
};
class Solution {
public:

    double getTriangleArea(Point a, Point b, Point c){
        return abs((a.x*b.y + b.x*c.y + c.x*a.y) - (b.x*a.y + c.x*b.y + a.x*c.y)) / 2.0;
    }
    double largestTriangleArea(vector<vector<int>>& points) {
        double maxArea = 0;
        int sz = points.size();
        for(int i = 0; i < sz; i++) {
            for(int j = i + 1; j < sz; j++) {
                for(int k = j + 1; k < sz; k++) {
                    Point a = {points[i][0], points[i][1]};
                    Point b = {points[j][0], points[j][1]};
                    Point c = {points[k][0], points[k][1]};

                    maxArea = max(maxArea, getTriangleArea(a, b, c));
                }
            }
        }
        return maxArea;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.