728x90
반응형
https://www.acmicpc.net/problem/3009 문제
(a,b) (c,b) (a,d) 와 같은 식으로 점이 3개가 주어진다.
그러면 반듯한 직사각형이 되려면 나머지 점 하나는 (c,d)에 찍혀야 한다.
a c a -> 2:1 로 c가 1이니까 c를 선택
b b d -> 2:1 로 d가 1이니까 d를 선택
x좌표와 y좌표들을 따서 비교하고, 혼자 다른 애를 취해서 합쳐서 출력하면 된다.
그림은 일단 편의상 저렇게 그려놨지만, 그 구하는점이 어디이든 마찬가지이다.
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
int[] p1 = {sc.nextInt(), sc.nextInt()}; //점1
int[] p2 = {sc.nextInt(), sc.nextInt()}; //점2
int[] p3 = {sc.nextInt(), sc.nextInt()}; //점3
sc.close();
int x = 0; //구하는 x
int y = 0; //구하는 y
//x좌표 3개 비교해서 서로 다른 값 하나 발라내기
if(p1[0] == p2[0]){
x = p3[0];
} else if(p1[0] == p3[0]){
x = p2[0];
} else if(p2[0] == p3[0]){
x = p1[0];
} else {
System.err.println("조건에 맞는 x좌표 구할 수 없음");
}
//y좌표 3개 비교해서 서로 다른 값 하나 발라내기
if(p1[1] == p2[1]){
y = p3[1];
} else if(p1[1] == p3[1]){
y = p2[1];
} else if(p2[1] == p3[1]){
y = p1[1];
} else {
System.err.println("조건에 맞는 y좌표 구할 수 없음");
}
System.out.println(x + " " + y);
}
}
가장 처리하기 속편하게 스캐너로 받아서 배열에 담았다.
0번지를 x, 1번지를 y로 담아 비교하였다.
업무상 예외처리 변태가 될 수밖에 없다보니..
혹시나 세 점이 일직선으로 값이 들어올까봐 예외 메시지 처리 가볍게 하나 더 추가했다.
728x90
반응형
'study > CodingTest' 카테고리의 다른 글
백준 2480 주사위 세개(Java) (0) | 2022.04.25 |
---|---|
백준 2525 오븐 시계 (Java) (1) | 2022.04.24 |
백준 1085 직사각형에서 탈출(Java) (1) | 2022.01.03 |
백준 1978 소수 찾기(Java) (0) | 2022.01.02 |
백준 1011 Fly me to the Alpha Centauri (Java) (0) | 2021.12.14 |
댓글