JAVA/Coding Test

[JAVA] 백준 3009 네 번째 점_기하1

오늘도개발 2023. 3. 6. 16:38

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

 

3009번: 네 번째 점

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

www.acmicpc.net

 

 접근 :

 

 - 좌표 3개의 값을 받아 x 좌표 배열, y 좌표 배열로 입력한다.

 

 - 직사각형 이기 때문에 같은 값의 좌표가 2개 씩 쌍으로 존재해야 한다.

 

 - 입력 받은 좌표 중 쌍을 이루지 않는 1개의 값을 찾아서 나머지 1개 의 값의 좌표로 입력한다. 

 

 - x 좌표값 기준으로 경우의 수를 나누어 보면

    1, 1, 3, target_x 인 경우( 1번째 x 좌표값과 2번째 x 좌표의 값이 같은 경우 3번째 값이 target 값이 된다)

    1, 3, 1 ,target_x 인 경우( 1번째 x 좌표값과 3번째 x 좌표의 값이 같은 경우 2번째 값이 target 값이 된다)

    1, 3, 3, target_x 인 경우 ( 1번째 x 좌표값과 2, 3 번 값이 다른 경우 1번째 값이 target 값이 된다)

 

- y 좌표값도 동일하게 경우의 수를 나뉠 수 있다.

 

 

 코드 구현 : 

 

import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] input;

		int[] x_array = new int[3];
		int[] y_array = new int[3];

		for (int i = 0; i < 3; i++) {
			input = br.readLine().split(" ");
			x_array[i] = Integer.parseInt(input[0]);
			y_array[i] = Integer.parseInt(input[1]);
		}

		int x = 0;
		if (x_array[0] == x_array[1]) {
			x = x_array[2];
		} else if (x_array[0] == x_array[2]) {
			x = x_array[1];
		} else {
			x = x_array[0];
		}

		int y = 0;
		if (y_array[0] == y_array[1]) {
			y = y_array[2];
		} else if (y_array[0] == y_array[2]) {
			y = y_array[1];
		} else {
			y = y_array[0];
		}

		System.out.println(x + " " + y);
		br.close();
	}
}