728x90
문제 번호: 3009
문제 제목: 네 번째 점
문제 주소: https://www.acmicpc.net/problem/3009
문제 내용
점 세 개가 주어졌을 때 직사각형을 이룰 수 있는 네 번째 점을 출력한다.
테스트 케이스
30 20 |
30 10 |
10 10 |
30 20 |
10 20 |
10 10 |
30 20 |
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 |