※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 1894번 문제인 4번째 점이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/1894
1894번: 4번째 점
각 줄은 8개의 실수로 이루어져 있는데 각각 첫 번째 변의 양 끝점의 (x,y) 좌표와 두 번째 변의 양 끝점의 (x,y) 좌표로 구성되어 있다. 모든 좌표는 미터 단위이며 mm까지 나타내야 한다. 또한 모
www.acmicpc.net
평행사변형의 한 점을 공유하는 두 변의 양끝 좌표가 주어졌을 때 이 평행사변형을 이루는 나머지 좌표를 찾는 문제이다.
공통되는 좌표를 찾아, 해당 점에서 벡터합을 이용해 다른 좌표를 구해 문제를 해결하자.
cin은 입력을 받는 데에 성공하면 1, 실패하면 0을 리턴한다는 점을 이용해 while문을 이용하여 입력을 받을 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
typedef long double ld;
pair<ld, ld> p1, p2, p3, p4;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout << fixed;
cout.precision(3);
while (cin >> p1.first >> p1.second >> p2.first >> p2.second >> p3.first >> p3.second >> p4.first >> p4.second) {
if (p2 == p3) swap(p1, p2);
else if (p1 == p4) swap(p3, p4);
else if (p2 == p4) swap(p1, p2), swap(p3, p4);
cout << p1.first + (p2.first - p1.first) + (p4.first - p1.first) << ' ' << p1.second + (p2.second - p1.second) + (p4.second - p1.second) << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1392 // C++] 노래 악보 (0) | 2023.02.11 |
---|---|
[BOJ 2839 // C++] 설탕 배달 (0) | 2023.02.10 |
[BOJ 26099 // C++] 설탕 배달 2 (0) | 2023.02.10 |
[BOJ 27435 // C++] 파도반 수열 2 (0) | 2023.02.09 |
[BOJ 9461 // C++] 파도반 수열 (0) | 2023.02.09 |