본문 바로가기
study/CodingTest

백준 3009 네 번째 점(Java)

by 고기만두(개발자) 2022. 1. 4. 19:32
728x90
반응형

백준 3009

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


백준 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
반응형

댓글