티스토리 뷰
반응형
삼각형의 면적을 구하는 방법 중 하나인 삼각형을 이루는 두 변(벡터)을 활용하는 것이다.
참조:
간략히 말하면
벡터 a, b 가 이루는 삼각형의 너비는 |a| * |b| * sin (<ab) * 1/2 인데, |a|를 밑변이라했을때 |b| *sin (<ab)가 높이와 같다.
따라서 밑변 (|a|) * h * 1/2 이다. 즉, 삼각형의 너비 공식과 같다.
이 때, 두 벡터 a, b를 외적(cross product) 한 것은 삼각형의 너비 *2 와 같다.
| a x b | = |a|*|b| * sin(<ab) 이다.
그러므로, 1/2 * | a x b | = 삼각형의 너비다.
2 차원인 두 벡터의 외적은 간단하다. ( ax,by ) x ( cx, dy ) = (ad - bc)
백준에서 삼각형 너비를 구하는 문제는 없지만,
다각형의 너비를 구하는 문제는 있다.
https://www.acmicpc.net/problem/2166
재밌다. 문제풀 때 엄청 틀렸었다.
일단 왜 틀렸냐면, 다각형이 말그대로 `다 각 형`이기때문에, 구부러진 형태도 있다는 것을 생각 하지 못하고
항상 매번 구하는 삼각형의 너비를 절대값을 취해줬었기 때문이다.
구부러진 형태의 것에서는 어떤 삼각형은 이전 삼각형 너비에서 빼주는 모양을 띄는 것을 간과하고 있었던 것이다.
정답 소스보러가기
https://github.com/ingyeoking13/algorithm/blob/master/bj/p1000/2166.cc
반응형
'알고리즘 문제 > math' 카테고리의 다른 글
중국인의 나머지 정리 (0) | 2019.10.20 |
---|---|
cf 585div2 B. The Number of Products (0) | 2019.09.18 |
백준 1081 합 (0) | 2019.03.09 |
codeforces 1060C Maximum Subrectangle (0) | 2018.12.13 |
908C New Year and Curling (0) | 2017.12.31 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- paul wilton
- beginning javascript
- javascript
- flutter
- 그라파나
- rosen
- 자바스크립트
- 아레나 시뮬레이션
- Discrete Mathematics
- 로젠
- 명제논리
- 대규모 시스템 설계 기초
- 아레나
- 데이터 중심 애플리케이션 설계
- Trie
- 이산 수학
- 이산수학
- grafana cloud
- 조합 코딩
- Arena
- 아레나시뮬레이션
- 백준
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Propositional and Predicate Logic
- 시뮬레이션
- Simulation
- arena simulation
- 자바스크립트 예제
- 최단경로 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함