이 문제는 약간의 생각을 하게 만든 문제..
이런 문제를 풀 때는 노트나 아이패드에 그림을 그려보는 것이 좋다.
내가 문제에 접근한 방식을 정리하자면,
핵심은 가장 작은 1번 점은 왼쪽, 가장 큰 3번 점은 오른쪽에 무조건 존재한다. 형광색으로 표시한 2번 점은 보다시피 왼쪽 오른쪽을 넘나든다. 따라서 2번 점을 이용하여 조건문을 작성한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//좌표 3개 입력받기
int point[][]= new int[3][2];
for(int i=0; i<3; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
point[i][0]=Integer.parseInt(st.nextToken());
point[i][1]=Integer.parseInt(st.nextToken());
}
//먼저 x좌표 순서대로 정렬, x좌표가 같을 경우 y좌표 순서대로 정렬
Arrays.sort(point,(e1,e2)->{
if(e1[0]==e2[0])
return e1[1]-e2[1];
else
return e1[0]-e2[0];
});
int position[]= new int[2]; //우리가 찾아야할 좌표
if(point[1][0]==point[0][0]) { //두번째로 큰 좌표가 직사각형의 왼쪽에 있을경우
position[0]=point[2][0];//찾는 좌표는 오른쪽에 있음
if(point[2][1]==point[0][1]) //가장 큰 좌표가 오른쪽 아래 꼭짓점에 있을경우
position[1]=point[1][1];//찾는 좌표는 오른쪽 위 꼭짓점에 있음
else//가장 큰 좌표가 오른쪽 위 꼭짓점에 있을경우
position[1]=point[0][1];//찾는 좌표는 오른쪽 아래 꼭짓점에 있음
}
else {//두번쨰로 큰 좌표가 직사각형의 오른쪽에 있을경우
position[0]=point[0][0];//일단 찾는 좌표는 왼쪽에 있다
if(point[0][1]==point[1][1])//가장 작은 좌표의 y값이 두번째로 큰 좌표와 같을경우
position[1]=point[2][1];//찾는 좌표는 직사각형 왼쪽 위 꼭짓점에 있음
else//가장 작은 좌표의 y값이 가장 큰 좌표와 같을 경우
position[1]=point[1][1];//찾는 좌표는 직사각형 왼쪽 아래 꼭짓점에 있음
}
System.out.print(position[0]+" "+position[1]);//결과 출력
br.close();
}
}
기하학 문제 넘 재밌당