본문 바로가기
Problem Solving/BOJ

[백준] 3009번 - 네 번째 점

by 테리는당근을좋아해 2020. 1. 10.

문제 >

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

 

입력 >

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

 

출력 >

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

 

해결방법 > 

양 변이 평행한 직사각형이 되려면 각 좌표가 (x1, y1), (x1, y2), (x2, y1), (x2, y2) 인 네 점으로 이루어져야하므로

x1(2개), x2(2개), y1(2개), y2(2개)가 있어야한다.

따라서 입력된 데이터 중 1개 씩만 존재하는 x, y값을 찾아낸다.

 

c++

#include <iostream>

using namespace std;

int main(){
    int x[3], y[3];
    int a, b;

    for(int i = 0; i < 3; i++){
        cin >> x[i] >> y[i];
    }
    a = (x[0] == x[1]) ? x[2] : ((x[1] == x[2]) ? x[0] : x[1]);
    b = (y[0] == y[1]) ? y[2] : ((y[1] == y[2]) ? y[0] : y[1]);

    cout << a << ' ' << b;
}

 

java

package baekjoon;

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] x = new int[3];
		int[] y = new int[3];
		int dx, dy;
		
		for(int i = 0; i < 3; i++) {
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		
		if(x[1] == x[2])
			dx = x[0];
		else
			dx = (x[0] == x[1]) ? x[2] : x[1];
		
		if(y[1] == y[2])
			dy = y[0];
		else
			dy = (y[0] == y[1]) ? y[2] : y[1];
			
		System.out.println(dx + " " + dy);
	}
}

 

문제링크 >

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

 

3009번: 네 번째 점

문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 예제 입력 1 복사 30 20 10 10 10 20 예제 출력 1 복사 30 10...

www.acmicpc.net

 

댓글