[백준/BOJ] 3009번_네번째 점 (C++/Java)

JIMIN·2023년 1월 29일

BOJ_Bronze

목록 보기
24/75

https://www.acmicpc.net/problem/3009

문제


세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.


입력


세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.


출력


직사각형의 네 번째 점의 좌표를 출력한다.



💻 예제 입력

5 5
5 7
7 5

💻 예제 출력

7 7

풀이


직사각형 네 점은 x좌표, y좌표가 각각 2개씩 같은 것을 이용하여 세 점이 주어졌을 때 다른 좌표와 겹치지 않는 x좌표값, y좌표값이 네번째 점이 됨.

XOR 연산은 같으면 0, 다르면 1을 나타내는데, A라는 숫자가 있을 때 자기 자신의 값으로 XOR 연산을 하면 0이 나오게 되고 → (A^A = 0)
자신과 0을 XOR 연산하면 자기 자신이 그대로 나오게 됨 → (A^0 = A)

이를 이용하여 x좌표 3개, y좌표 3개를 XOR 연산하면 나머지 한 점의 좌표가 나오게 되는 원리.

x1과 x2가 같다고 가정했을 때 x1^x2 = 0, 이를 x3과 연산하면 x3^0 = x3


C++ 소스코드


#include <iostream>
using namespace std;

int main(void)
{
    int x1, x2, x3, y1, y2, y3;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
    cout << int(x1^x2^x3) << " " << int(y1^y2^y3) << "\n";
}

Java 소스코드


import java.util.Scanner;

public class Main {
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int x4 = 0, y4 = 0;

        for (int i = 0; i < 3; i++) {
            x4 ^= sc.nextInt();
            y4 ^= sc.nextInt();
        }
        System.out.println(x4 + " " + y4);
    }
}
profile
잘못된 코드나 정보가 있다면 알려주세요! 👋🏻

0개의 댓글