백준 알고리즘
[백준][C++] 3009번 : 네 번째 점
탱글한푸딩
2024. 7. 6. 11:17
반응형
문제
http://www.acmicpc.net/problem/3009
코드
#include <iostream>
using namespace std;
struct Point
{
int x, y;
};
int main()
{
Point p1, p2, p3, p4;
cin >> p1.x >> p1.y >> p2.x >> p2.y >> p3.x >> p3.y;
p4.x = p1.x ^ p2.x ^ p3.x;
p4.y = p1.y ^ p2.y ^ p3.y;
cout << p4.x << " " << p4.y << '\n';
return 0;
}
풀이
struct Point
{
int x, y;
};
Point 구조체로 직사각형의 좌표 관리 (구조체 사용이유 : 가독성과 유지보수성)
p4.x = p1.x ^ p2.x ^ p3.x;
p4.y = p1.y ^ p2.y ^ p3.y;
^ : XOR 연산 : 동일한 값이 두번 나타나면 상쇄되는 성질
예) a ^ a = 0, a ^ b ^ a = b, 5 ^ 5 ^ 7 = 7
위 연산을 사용해서 직사각형의 마지막 점의 위치를 쉽게 찾을 수 있다.
반응형