2019. 8. 6. 11:08
728x90

문제 번호: 3009

문제 제목: 네 번째 점

문제 주소: https://www.acmicpc.net/problem/3009


문제 내용

점 세 개가 주어졌을 때 직사각형을 이룰 수 있는 네 번째 점을 출력한다.


테스트 케이스

30 20
10 10
10 20

30 10

10 10
30 10
10 20

30 20

10 20
30 10
30 20

10 10

30 20
10 10
30 10

10 20


문제 풀이

사각형 중 모자란 한 점을 찾는 것이므로 세 점에서 짝이 없는 수를 찾으면 된다.
XOR 연산자는 비트가 서로 다르면 1, 같으면 0이 된다. 이와 관련하여 갖는 성질로 아래 두 가지가 있다.
1. 값이 0인 변수에 A 값의 XOR 연산을 하면 해당 변수는 A가 된다.
 - 모든 비트가 0이므로 1인 비트에 대한 부분만 1이 되기 때문
2. 값이 A인 변수에 B 값의 XOR 연산을 두 번 하면 원래의 값 A가 된다.
 - 최초 연산일 때 값이 변경된 부분만 다시 변경되기 때문.
 - 예시) 01010101 ^ 00110011 ^ 00110011 = 01100110 ^ 00110011 = 01010101
이러한 성질을 이용하면 사각형의 나머지 꼭지점을 빠르게 찾아낼 수 있다.


풀이 코드

728x90

'공부 > 문제풀기' 카테고리의 다른 글

백준 3053 - 택시 기하학  (0) 2019.08.06
백준 4153 - 직각삼각형  (0) 2019.08.06
백준 1085 - 직사각형에서 탈출  (0) 2019.08.06
백준 9020 - 골드바흐의 추측  (0) 2019.08.06
백준 4948 - 베르트랑 공준  (0) 2019.08.06
Posted by 아야카