728x90
https://www.acmicpc.net/problem/2166
2166번: 다각형의 면적
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
www.acmicpc.net
입력으로 꼭짓점의 좌표가 순서대로 들어오는데,
순서대로라는 점을 보아
신발끈 공식을 사용하면 될 것 같다.
신발끈 공식은
꼭짓점의 좌표를 순서대로 늘어놓고, 교차로 곱하고 빼면서 다각형의 넓이를 구하는 공식이다.
자세한 계산방법은
https://namu.wiki/w/%EC%8B%A0%EB%B0%9C%EB%81%88%20%EA%B3%B5%EC%8B%9D
신발끈 공식 - 나무위키
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권
namu.wiki
여기 나무위키에 이해하기 쉽게 나와있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class P2166 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n= Integer.parseInt(br.readLine());
long[][] arr=new long[n+1][2];
for(int i=0;i<n;i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0]=Long.parseLong(st.nextToken());
arr[i][1]=Long.parseLong(st.nextToken());
//[i][0]==x, [i][1]==y
}
arr[n][0]=arr[0][0];
arr[n][1]=arr[0][1];
long result=0;
for(int i=0;i<n;i++) {
result+=((arr[i][0]*arr[i+1][1])-(arr[i][1]*arr[i+1][0]));
}
result=Math.abs(result);
System.out.println(String.format("%.1f", result/2.0));
}
}
728x90
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 14500번: 테트로미노 (0) | 2023.02.10 |
---|---|
[자바] 백준 14499번: 주사위 굴리기 (0) | 2023.02.09 |
[자바] 백준 11758번: CCW (0) | 2023.02.07 |
[자바] 백준 1915번: 가장 큰 정삼각형 (0) | 2023.02.06 |
[자바] 백준 1932번: 정수 삼각형 (0) | 2023.02.05 |
댓글