백준 알고리즘

[백준][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

 

위 연산을 사용해서 직사각형의 마지막 점의 위치를 쉽게 찾을 수 있다.

반응형