공부혜옹

백준 1485 정사각형 본문

공부합시다/Algorithm

백준 1485 정사각형

Blair06 2021. 9. 14. 19:26

처음엔 정사각형이 되지 않을 조건을 먼저 생각해 보았는데 정사각형 특성상 정사각형일때만 해당되는 조건이 훨씬 명확하고 적은것같아 방향을 바꾸었다.

 

정사각형이 될 조건은 

1. 모든 변의 길이가 같다

2. 대각선의 길이가 서로 같다

 

주어지는 네개의 점을 이용해 거리를 계산하면 6개의 길이가 나온다 이때 점을 미리 사각형의 형태로 나열한 후 거리를 구하는것 보다 일단 6개의 길이를 다 구한후 sort하면 나머지 두개의 길이가 대각선의 길이임을 알 수 있다. (정사각형은 변의 길이보다 대각선의 길이가 항상 길기 때문)

#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>
using namespace std;


int t;

int x1, x2, yy1, y2;

int func(int x1, int yy1, int x2, int y2){
    
    return pow(x1 - x2, 2) + pow(yy1 - y2, 2);
    
}
int main(){
    
    
    cin >> t;
    while(t--){
        vector<pair<int, int>> v;
        vector<int> s;
        for (int i = 0; i < 4; i++){
            int a,b;
            cin >> a >> b;
            v.push_back(make_pair(a, b));
        }
        
        for(int i=0; i<4; i++){
            for(int j=i+1; j<4; j++){
                s.push_back(func(v[i].first,v[i].second, v[j].first, v[j].second));
            }
        }
        
        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;
}
반응형

'공부합시다 > Algorithm' 카테고리의 다른 글

백준 1517 버블소트  (0) 2021.09.28
백준 5904 moo 게임  (0) 2021.09.28
백준 1004 어린 왕자  (0) 2021.09.14
백준 15686 치킨배달  (0) 2021.08.31
백준 1339 단어수학  (0) 2021.08.31
Comments