코딩 테스트/백준

백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 3009 네 번째 점

devrabbit22 2026. 3. 30. 01:16

이번 문제는 세 개의 점이 주어졌을 때, 직사각형을 완성하기 위한 네 번째 점의 좌표를 구하는 문제이다. 직사각형의 성질상 각 좌표의 x값과 y값은 각각 두 번씩 등장하게 된다.

따라서 주어진 세 점 중에서 두 번 등장하는 값이 아닌, 한 번만 등장하는 x값과 y값을 찾아 해당 값을 조합하면 네 번째 점의 좌표를 구할 수 있다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class geometry1
    {
        static void Main(string[] args)
        {
            //백준 3009 네 번째 점
            string[] inputA = Console.ReadLine().Split();
            string[] inputB = Console.ReadLine().Split();
            string[] inputC = Console.ReadLine().Split();

            int A, a, B, b, C, c;
            int D = 0;  int d = 0;

            A = int.Parse(inputA[0]);   a = int.Parse(inputA[1]);
            B = int.Parse(inputB[0]);   b = int.Parse(inputB[1]);
            C = int.Parse(inputC[0]);   c = int.Parse(inputC[1]);

            //x축과 y축이 서로 겹치는 수가 있는지 확인
            if (A == B)
            {
                D = C;
            }
            else if (A == C)
            {
                D = B;
            }
            else
            {
                D = A; // B == C인 경우
            }

            if (a == b)
            {
                d = c;
            }
            else if (a == c)
            {
                d = b;
            }
            else
            {
                d = a; // b == c인 경우
            }

            Console.WriteLine(D + " " + d);
        }
    }
}

출력 결과

사실 이 문제는 XOR 연산자를 활용하면 더 간단하게 해결할 수 있다.
XOR 연산은 같은 값이 두 번 등장하면 서로 상쇄되고, 한 번만 등장하는 값만 남는 특징이 있다.

이를 이용하여 세 점의 x좌표와 y좌표를 각각 XOR 연산하면, 한 번만 등장하는 값이 남게 되어 네 번째 점의 좌표를 구할 수 있다.

int x = A ^ B ^ C;
int y = a ^ b ^ c;

Console.WriteLine(x + " " + y);