728x90
반응형
https://www.acmicpc.net/problem/1485
1485번: 정사각형
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
int n, x, y;
cin >> n;
for(int i = 0; i < n; i++){
vector<pair<int, int>> v;
vector<int> s;
for(int j = 0; j < 4; j++){
cin >> x >> y;
v.push_back({x, y});
}
for(int j = 0; j < 4; j++){
for(int z = j + 1; z < 4; z++){
s.push_back(pow(v[j].second - v[z].second, 2) + pow(v[j].first - v[z].first, 2));
}
}
sort(s.begin(), s.end());
if(s[0] == s[1] && s[1] == s[2] && s[2] == s[3] && s[4] == s[5]) cout << 1 << endl;
else cout << 0 << endl;
}
return 0;
}
정사각형이 되는 조건은
1. 모든 변의 길이가 같다.
2. 대각선의 길이가 서로 같다.
주어진 네 개의 점 간의 거리를 계산하면 6개의 길이가 나온다. 이 6개의 길이를 sort하면 앞에 있는 4개의 길이가 변의 길이이고, 나머지 2개의 길이가 대각선의 길이이다. (정사각형은 항상 변의 길이보다 대각선의 길이가 길기 때문)
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 19637번 IF문 좀 대신 써줘 (C++) (0) | 2022.02.16 |
---|---|
[BOJ] 1543번 문서 검색 (C++) (0) | 2022.02.16 |
[BOJ] 24444번, 24445번 알고리즘 수업 - 너비 우선 탐색 1, 2 (C++) (0) | 2022.02.15 |
[BOJ] 24479번, 24480번 알고리즘 수업 - 깊이 우선 탐색 1, 2 (C++) (0) | 2022.02.15 |
[BOJ] 15989번 1, 2, 3 더하기 4 (C++) (0) | 2022.02.14 |