본문 바로가기
알고리즘/백준

백준 3009번 네 번째 점 [C++]

by seongjun 2023. 12. 4.

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

 

3009번: 네 번째 점

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

www.acmicpc.net

 

 

세 점의 좌표가 주어지면, 직사각형을 만들기 위한 나머지 한 점의 좌표를 출력하면 된다.

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    int xarr[3];
    int yarr[3];
    for (int i=0;i<3;i++){
        cin >> xarr[i] >> yarr[i];
    }
    int answer[2];
    for (int i=0;i<3;i++){
        int xcheck = 0;
        int ycheck = 0;
        for (int j=0;j<3;j++){
            if (i == j)
                continue;
            if (xarr[i] == xarr[j]){
                xcheck = 1;
            }
            if (yarr[i] == yarr[j]) {
                ycheck = 1;
            }
        }
        if (xcheck == 0){
            answer[0] = xarr[i];
        }
        if (ycheck == 0){
            answer[1] = yarr[i];
        }
    }
    cout << answer[0] << ' '<< answer[1];
}

주어진 좌표들 중에서 한번만 나온 숫자를 출력하면 된다.

즉, x좌표 숫자 세개, y좌표 숫자 세개가 입력으로 들어오는데, 이때 반드시 중복되는 숫자가 들어있게 된다.

그러므로, 한 번만 나온 숫자가 나머지 점의 좌표가 되는 셈이다.