https://www.acmicpc.net/problem/2166
신발끈 공식을 이용한 문제입니다.
고등학교때 배웠는지, 대학와서 선형대수학에서 배웠는지 모르겠지만...
워낙 간단하고 유용한 공식이라 아직 머릿속에 남아있어서 쉽게 해결했습니다.
공식에 대해 잘 모르시는 분은 아래의 킹무위키를 참고해 보셔도 될 것 같습니다! 흐흐...
https://namu.wiki/w/%EC%8B%A0%EB%B0%9C%EB%81%88%20%EA%B3%B5%EC%8B%9D
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[][] points = new long[N + 1][2];
for (int n = 0; n < N; n++) {
st = new StringTokenizer(br.readLine());
points[n][0] = Long.parseLong(st.nextToken());
points[n][1] = Long.parseLong(st.nextToken());
}
points[N] = points[0].clone();
long sum1 = 0L;
long sum2 = 0L;
for (int n = 0; n < N; n++) {
sum1 += points[n][0] * points[n + 1][1];
sum2 += points[n][1] * points[n + 1][0];
}
System.out.println(String.format("%.1f", Math.abs(sum1 - sum2) / 2D));
}
}
입력의 범위가 10만이고, 둘을 곱하면 int의 크기를 넘어가는 것만 주의하시면 쉽게 풀 수 있습니다!
저는 눈치 못채서 걸렸습니다!! 으아아악!!
728x90
'🔍 알고리즘 > 백준 Java' 카테고리의 다른 글
[Java] 백준 1806번. 부분합 (골드4) (0) | 2021.12.02 |
---|---|
[Java] 백준 2467번. 용액 (골드5) (0) | 2021.12.02 |
[Java] 백준 14939번. 불끄기 (플래티넘5) (0) | 2021.12.02 |
[JAVA] 백준 18248번. 제야의종 (실버2) (0) | 2021.11.30 |
[JAVA] 백준 4600번. 정글의법칙 (실버2) (0) | 2021.11.30 |