직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다.
생각의 흐름
이번 문제는 사실 보자마자 풀이는 떠올랐다.
그냥 점 3개씩 잡아서 외적 하면 넓이 나오는 문제이다.
우선 외적으로 면적을 구하는 공식은 다음과 같다.
3점을 기준으로 외적을 진행해 주면 삼각형의 면적이 나온다.
이를 좌표마다 진행해주면 된다. 다음 블로그의 글을 먼저 참고하길 권장한다.
나의 코드
#include <bits/stdc++.h>
using namespace std;
#define MAX 1001
int N;
vector<pair<int, int>> vec;
double external(double x1, double x2, double x3, double y1, double y2, double y3){
double temp = (x1*y2 + x2*y3 + x3*y1) - (x2*y1 + x3*y2 + x1*y3);
return temp/2;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N;
int x, y;
for(int i = 0; i < N; i++) {
cin >> x >> y;
vec.push_back({x, y});
}
double res = 0;
for(int i = 1; i < N; i++) {
res += external(vec[0].first, vec[i-1].first, vec[i].first, vec[0].second, vec[i-1].second, vec[i].second);
}
cout.precision(1);
cout << fixed;
cout << abs(res);
return 0;
}
'Algorithm > 백준' 카테고리의 다른 글
[백준][C++] 1005번: ACM Craft <211> (0) | 2022.04.06 |
---|---|
[백준][C++] 1766번: 문제집 <210> (0) | 2022.04.05 |
[백준][C++] 2473번: 세 용액 <208> (0) | 2022.03.31 |
[백준][C++] 2239번: 스도쿠 <207> (0) | 2022.03.30 |
[백준][C++] 2467번: 용액 <206> (0) | 2022.03.28 |
댓글