본문 바로가기
공부 정리/백준

[백준] 자바 3009 네 번째 점

by 경적필패. 2021. 8. 17.
반응형

문제

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

입력

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

출력

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


테스트 케이스

입력

5 5
5 7
7 5

출력
7 7

---------------------

입력

30 20
10 10
10 20

출력
30 10

 


접근

1. 점 두 개씩 3개를 입력 받음

2. 점 하나를 추가하여 직사각형이 되기 위한 점을 출력해줍니다.

 

이 문제의 핵심은 짝을 맞추는 게 중요합니다.

직사각형이 되기 위해선,

같은 x좌표가 2개씩 2쌍이 있어야 하고 

같은 y좌표가 2개씩 2쌍이 있어야 합니다.

 

예를 들면 

(0,0) , (0,1) , (1,0), (1,1)에서도 볼 수 있듯이

x 0 좌표가 2개이며

x 1 좌표가 2개

y 0 좌표 2개

y 1 좌표 2개

이처럼 2개씩 존재합니다.

이를 이용해 코드를 짜니 문제가 해결되었습니다.

 


코드

import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;

public class Main {

	/*
 	 3009 problem
	*/

	
	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int arr[][] = new int[3][3];
		int x,y;
		for(int i=0; i<3; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
				arr[i][0] = Integer.parseInt(st.nextToken());
				arr[i][1] = Integer.parseInt(st.nextToken());
		}
		
		//x
		if(arr[0][0] == arr[1][0]) {
			x = arr[2][0];
		}
		else if(arr[0][0] == arr[2][0]) {
			x = arr[1][0];
		}
		else {
			x = arr[0][0];
		}
		
		//y
		if(arr[0][1] == arr[1][1]) {
			y = arr[2][1];
		}
		else if(arr[0][1] == arr[2][1]) {
			y = arr[1][1];
		}
		else {
			y = arr[0][1];
		}
		
		bw.write(x+" "+y);
		bw.flush();
		br.close();
		bw.close();
	}
}

주의

x

 

 

반응형

댓글