본문 바로가기

백준/C++

[Baekjoon/C++] 네 번째 점 3009번

Baekjoon Online Judge

 

문제로 이동

 

문제

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

 

입력

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

 

출력

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

 


예제 입력  예제 출력
5 5
5 7
7 5
7 7
30 20
10 10
10 20
30 10 

풀이

#include <iostream>
using namespace std;

void findSolo(int* oneTwo, int third);

// 세 점 중 혼자 좌표가 다른 것을 찾는다.
void findSolo (int* oneTwo, int third) {
    int solo;

    if (oneTwo[0] == oneTwo[1]) // 첫번째와 두번째 점의 좌표가 같음
        solo = third;
    else if (third == oneTwo[0]) // 첫번째와 세번째가 같음
        solo = oneTwo[1];
    else // 두번째와 세번째가 같음
        solo = oneTwo[0];

    cout << solo << " ";
}

int main() {
    // 점 2개의 위치 정보를 배열에 저장한다.
    int xNum[2], yNum[2];
    for (int i = 0; i < 2; i++)
        cin >> xNum[i] >> yNum[i];

    // 나머지 점 1개의 위치 정보
    int x, y;
    cin >> x >> y;

    findSolo(xNum, x);
    findSolo(yNum, y);
    
    return 0;
}

직사각형의 각 점의 x, y좌표는 직사각형 내의 다른 점의 좌표 x나 y와 무조건 짝을 이룬다.

ex)  0, 1        2, 1

      0, 0        2, 0

그러므로 짝 없이 혼자 있는 x, y좌표를 찾으면 직사각형의 네 번째 점의 좌표를 알 수 있다.