-
백준 2166 다각형의 면적 - C++, 벡터의 내적쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 6. 11. 20:29반응형
#include <iostream> #include <math.h> using namespace std; int t; pair<double, double> spot[100001]; double CCW(double x1, double y1, double x2, double y2){ double rVal = (spot[0].first * y1) + (x1 * y2) + (x2 * spot[0].second); rVal += (-spot[0].second * x1) - (y1 * x2) - (y2 * spot[0].first); rVal /= 2; return rVal; } int main(){ double res = 0; scanf("%d", &t); for(int i = 0; i < t; i++) scanf("%lf %lf", &spot[i].first, &spot[i].second); for(int i = 1; i < t; i++) res += CCW(spot[i-1].first, spot[i-1].second, spot[i].first, spot[i].second); printf("%.1lf\n", abs(res)); return 0; }
처음에 CCW가 뭔가 했는데 검색을 해보니 벡터의 외적을 이용하는 문제라고 합니다. 개념을 자세히 본 뒤 풀어보니 그렇게 어려운 문제는 아니었습니다. 백터의 외적을 구한뒤 넓이를 구하는 문제라 abs를 이용해 절댓값을 출력해주면 되는 문제였습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 11657 타임머신 - C++, 벨만포드 알고리즘 (0) 2021.06.15 백준 7579 앱 - C++, 배낭 문제 (0) 2021.06.15 백준 9446 텀 프로젝트 - C++, DFS (0) 2021.06.10 백준 1956 운동 - 플로이드-와샬, C++ (0) 2021.06.07 백준 10282 해킹 - C++, 다익스트라 (0) 2021.06.06