https://school.programmers.co.kr/learn/courses/30/lessons/120875
나올 수 있는 모든 선분을 만들어서 기울기를 구한 값을 넣고 0,1 / 2,3 / 4,5 끼리 비교
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> dots) {
int answer = 0;
vector<float> slope;
float a;
float b;
a = dots[0][0] - dots[1][0];
b = dots[0][1] - dots[1][1];
slope.push_back(b/a);
a = dots[2][0] - dots[3][0];
b = dots[2][1] - dots[3][1];
slope.push_back(b/a);
a = dots[0][0] - dots[2][0];
b = dots[0][1] - dots[2][1];
slope.push_back(b/a);
a = dots[1][0] - dots[3][0];
b = dots[1][1] - dots[3][1];
slope.push_back(b/a);
a = dots[0][0] - dots[3][0];
b = dots[0][1] - dots[3][1];
slope.push_back(b/a);
a = dots[1][0] - dots[2][0];
b = dots[1][1] - dots[2][1];
slope.push_back(b/a);
for(int i = 0; i < 5; i += 2)
{
if(slope[i] == slope[i+1])
answer = 1;
}
return answer;
}
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(vector<vector<int>> dots) {
// 각각 페어가 되는 경우의 수
vector<vector<int>> pairs = {
{0, 1, 2, 3},
{0, 2, 1, 3},
{0, 3, 1, 2}
};
for (vector<int> xy : pairs) {
int mul1 = (dots[xy[1]][1] - dots[xy[0]][1]) * (dots[xy[3]][0] - dots[xy[2]][0]);
int mul2 = (dots[xy[1]][0] - dots[xy[0]][0]) * (dots[xy[3]][1] - dots[xy[2]][1]);
if (mul1 == mul2) {
return 1;
}
}
return 0;
}
페어가 되는 경우의 수를 따로 정리해 둔 뒤 사용하였다.